Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.misc -> Re: Returning values from Stored Procedure with ADO and VB5
This is a workaround but it should work:
Istead of PROCEDURE create a FUNCTION that returns VARCHAR2, e.g.
CREATE OR REPLACE FUNCTION SCOTT.SAMPLEOUTPUT(
ID IN NUMBER) RETURN VARCHAR2 IS
NAME2 VARCHAR2;
Begin
SELECT Scott.Sample2.Sample_Name
INTO NAME2 From Scott.Sample2
WHERE Sample_ID = ID;
RETURN (NAME2); End SampleOutput;
Then you set the .CommandText = "select SCOTT.sampleoutput(" & _ id & ") from dual" where 'id' has desired value.
the result recordset hopefully contains the desired value.
Jussi
CSC Staff wrote:
>
> HELP! I am experimenting with Oracle 8 and VB and am having
> difficulties getting return values back from a stored procedure
>
> I have been messing aroung with this for quite some time now and am
> getting nowhere. As soon as the program executes the
> 'qySample2.Execute' command below, the following error is returned:
>
> ORA-06502: PL/SQL: numeric or value error
> ORA-06512: at "SCOTT.SAMPLEOUTPUT", line 6
> ORA-06512: at line 1
>
> As far as I can tell, Oracle is unhappy with the way I am referring to
> the NAME2 variable in the stored procedure. I tried to perform the same
> manuver in RDO and got a similar error.
>
> I would really appreciate any help!
>
> Thanks!
>
> Craig Love
>
> RELEVANT INFO FOLLOWS---
>
> Here is the sample VB5 code that I am using:
>
> Set cnTracker = New ADODB.Connection
>
> With cnTracker
> .ConnectionTimeout = 3
> .CursorLocation = adUseClient
> End With
>
> sConnection = "DSN=ORCL;UID=SCOTT;PWD=TIGER;"
>
> cnTracker.Open sConnection
>
> Dim qySample2 As New ADODB.Command
>
> With qySample2
> .CommandText = "SCOTT.sampleoutput"
> .CommandType = adCmdStoredProc
> .ActiveConnection = cnTracker
> .Parameters.Append .CreateParameter(, adNumeric, adParamInput)
> .Parameters.Append .CreateParameter(, adVarChar,
> adParamInputOutput, 35)
> End With
>
> qySample2(0) = 2
> qySample2(1) = "A"
>
> qySample2.Execute
>
> Here is the Stored Procedure the code is accessing:
>
> CREATE OR REPLACE PROCEDURE SCOTT.SAMPLEOUTPUT(
> ID IN NUMBER,
> NAME2 IN OUT VARCHAR2) IS
>
> Begin
> SELECT Scott.Sample2.Sample_Name
> INTO NAME2 From Scott.Sample2
> WHERE Sample_ID = ID;
> End SampleOutput;
> /
>
> Here is the table Sample2:
>
> Sample_ID Number(10)
> Sample_Name varchar2(35)
--
If you pick up a starving dog and make him prosperous, he will not bite
you. This is the principal difference between a dog and a man. -Mark
Twain
[Puddin'head Wilson]
Received on Wed Mar 31 1999 - 23:58:48 CST