On 05/26/2010 10:46 AM, John Scoles wrote:
> Bob McGowan wrote:
>
> I am interested in this one Bob here are my words on it.
>
>
-- Deleted my code details --
>>
>>
> What I want you to do so I can properly debug this is
>
> 1) tell me what version of DBD::Oracle you are useing
> 2) what version of Oracle
> 3) what platform is it running on
> 4) what version of Perl
>
> finally
> If you are using a later version of DBD::Oracle I would like you to
> rerun your code but this time do this
>
> $dbd->{dbd_verbose}=15;
>
> after you connect and then send me all the output from a test run of you
> .PL
>
> cheers
> John Scoles
>
>
Hi, John,
So far as I can tell (I'm not a PL/SQL programmer) the append_comments
function does not explicitly create any temporary CLOB elements. I can
provide the code for the procedure, if you think it would help.
Is it possible that the procedure needs to know it's dealing with a CLOB
temporary element from the DBD?
Here's the info you requested:
1) DBD::Oracle is 1.24 (fyi, DBI is 1.611)
2) Oracle instantclient v. 10.2.0.3, connecting to Oracle server
10.2.0.1.0 - 64bit
3) DBD built on GNU/Linux (Debian 5.0.4), server running on a SPARC
sun4u with Solaris OS v. 5.10
4) perl v5.8.8 built for i686-linux
The output for the test run is attached.
Thanks again.
--
Bob McGowan
Symantec
dbd_preparse scanned 2 distinct placeholders
OCIHandleAlloc(82d07e8,8309df0,OCI_HTYPE_STMT,0,0)=SUCCESS
OCIStmtPrepare(82ef660,82e6378,'
BEGIN
append_comments(:incident, :comments);
END;
',179,1,0)=SUCCESS
OCIAttrGet(82ef660,OCI_HTYPE_STMT,8309dfc,0,OCI_ATTR_STMT_TYPE,82e6378)=SUCCESS
dbd_st_prepare'd sql BEGIN (pl1, auto_lob1, check_sql1)
dbd_describe skipped for BEGIN
dbd_bind_ph(): bind :incident <== '1199329' (type 0 (DEFAULT (varchar)))
dbd_rebind_ph() (1): rebinding :incident as '1199329' (not-utf8, ftype 1
(VARCHAR), csid 0, csform 0(0), inout 0)
dbd_rebind_ph_char() (1): bind :incident <== '1199329' (size 7/8/0, ptype
4(VARCHAR), otype 1 )
dbd_rebind_ph_char() (2): bind :incident <== ''119932' (size 7/8, otype
1(VARCHAR), indp 0, at_exec 1)
bind :incident as ftype 1 (VARCHAR)
OCIBindByName(82ef660,830a65c,82e6378,":incident",placeh_len=9,value_p=83089e0,value_sz=8,dty=1,indp=830a674,alenp=0,rcodep=830a66c,maxarr_len=0,curelep=0
(*=0),mode=DATA_AT_EXEC,2)=SUCCESS
OCIBindDynamic(82ef42c,82e6378,830a638,b7c79a50,830a638,b7c79c70)=SUCCESS
OCIAttrGet(82ef42c,OCI_HTYPE_BIND,830a648,0,31,82e6378)=SUCCESS
dbd_rebind_ph(): bind :incident <== '1199329' (in, not-utf8, csid 1->0->1,
ftype 1 (VARCHAR), csform 0(0)->0(0), maxlen 8, maxdata_size 0)
OCIAttrSet(82ef42c,OCI_HTYPE_BIND, bfffdce8,0,Attr=31,82e6378)=SUCCESS
dbd_bind_ph(): bind :comments <== 'this is a test
and more stuff.
' (type 0 (DEFAULT (varchar)), attribs: HASH(0x814d7f0))
dbd_rebind_ph() (1): rebinding :comments as 'this ...' (not-utf8, ftype 112
(SQLT_CLOB / long), csid 0, csform 0(0), inout 0)
OCIDescriptorAlloc(82d07e8,830a6e8,OCI_DTYPE_LOB,0,0)
OCIAttrSet(82e4b9c,OCI_DTYPE_LOB,
bfffdbb4,0,Attr=OCI_ATTR_LOBEMPTY,82e6378)=SUCCESS
OCILobCreateTemporary(82e6304,82e6378,82e4b9c,0,0,2,1,10)=SUCCESS
OCILobCharSetForm(82d07e8,82e6378,82e4b9c,1)=SUCCESS
OCILobCharSetId(82d07e8,82e6378,82e4b9c,1)=SUCCESS
calling OCILobWrite phs->csid=1 phs->csform=1 amtp=31
OCILobWrite(82e6304,82e6378,82e4b9c,bfffdbb0,1,8308958,31,0,0,0,1,1)=SUCCESS
bind :comments as ftype 112 (SQLT_CLOB / long)
OCIBindByName(82ef660,830a6e4,82e6378,":comments",placeh_len=9,value_p=830a6e8,value_sz=4,dty=112,indp=830a6fc,alenp=0,rcodep=830a6f4,maxarr_len=0,curelep=0
(*=0),mode=DEFAULT,0)=SUCCESS
OCIAttrSet(82ef2f4,OCI_HTYPE_BIND,
bfffdceb,0,Attr=OCI_ATTR_CHARSET_FORM,82e6378)=SUCCESS
OCIAttrGet(82ef2f4,OCI_HTYPE_BIND,830a6d0,0,31,82e6378)=SUCCESS
dbd_rebind_ph(): bind :comments <== 'this ...' (in, not-utf8, csid 1->1->1,
ftype 112 (SQLT_CLOB / long), csform 1(SQLCS_IMPLICIT)->1(SQLCS_IMPLICIT),
maxlen 4, maxdata_size 0)
OCIAttrSet(82ef2f4,OCI_HTYPE_BIND, bfffdce8,0,Attr=31,82e6378)=SUCCESS
dbd_st_execute BEGIN (out0, lob1)...
Statement Execute Mode is 0 (DEFAULT)
in ':incident' [0,0]: len 7, ind 0, value='1199329'
OCIStmtExecute(82e6304,82ef660,82e6378,1,0,0,0,mode=DEFAULT,0)=SUCCESS
OCIAttrGet(82ef660,OCI_HTYPE_STMT,bfffdd68,0,OCI_ATTR_ROW_COUNT,82e6378)=SUCCESS
OCIAttrGet(82ef660,OCI_HTYPE_STMT,bfffdd6e,0,OCI_ATTR_SQLFNCODE,82e6378)=SUCCESS
dbd_st_execute BEGIN returned (SUCCESS, rpc1, fn34, out0)
OCIHandleFree(82e4b9c,OCI_DTYPE_LOB)=INVALID_HANDLE
OCITransCommit(82e6304,82e6378,0)=SUCCESS
OCISessionEnd(82e6304,82e6378,8306a98,mode=DEFAULT 0)=SUCCESS
OCIServerDetach(82e6904,82e6378,mode=DEFAULT,0)=SUCCESS
dbd_st_destroy
OCIHandleFree(82ef660,OCI_HTYPE_STMT)=SUCCESS
OCILobIsTemporary(82d07e8,82e6378,82e4b9c,bfffda38)=SUCCESS
OCILobFreeTemporary SUCCESS
OCILobFreeTemporary(82e6304,82e6378,82e4b9c)=(UNKNOWN OCI STATUS 1041)
OCIErrorGet(82e6378,1,"<NULL>",bfffd9a8,"",1024,2)=NO_DATA
OCIDescriptorFree(82e4b9c,OCI_DTYPE_LOB)
(in cleanup) DBD::Oracle::st DESTROY failed: (DBD (UNKNOWN OCI STATUS
1041): OCILobFreeTemporary) [for Statement "
BEGIN
append_comments(:incident, :comments);
END;
"], <> line 2.
OCIHandleFree(8306a98,OCI_HTYPE_SESSION)=SUCCESS
OCIHandleFree(82e6904,OCI_HTYPE_SERVER)=SUCCESS
OCIHandleFree(82e6304,OCI_HTYPE_SVCCTX)=SUCCESS
OCIHandleFree(82e6378,OCI_HTYPE_ERROR)=SUCCESS