при вызове хранимой процедуры Oracle 9i в программе vb6 с использованием набора записей произошла ошибка 91: переменная объекта или переменная блока не установлена
Ниже приведена хранимая процедура
create or replace
PROCEDURE SP_some( P_IN IN VARCHAR2,
P_RECORDSET OUT SYS_REFCURSOR) AS
BEGIN
OPEN P_RECORDSET FOR
SELECT DISTINCT someColumn,
ROUND(TO_NUMBER((TO_DATE(SUBSTR(someTimeStamp,1,15), 'YYYYMMDD HH24MISS')+someInteger/24) - SYSDATE)*24*60) c1,
(TO_CHAR((TO_DATE(SUBSTR(someTimeStamp,1,15), 'YYYYMMDD HH24MISS')+someInteger/24),'DD/MM/YYYY HH24:MI:SS')) c2,
DECODE(someData, 'Y', 'Yes','No') AS someBoolean
FROM t1
WHERE someID = P_IN ;
-- i join more than 5 table here
END ;
Я выполнил хранимую процедуру без ошибок в Oracle SQL Developer, считая запись,
но ошибка переполнения при попытке PUT_LINE значение
DECLARE
i_counter integer;
v_cursor SYS_REFCURSOR;
v_value varchar2(100);
BEGIN
SP_GET_WINDOWTIME(P_IN => 'PleaseWork',
P_RECORDSET => v_cursor);
i_counter := 0;
LOOP
FETCH v_cursor
INTO v_value;
EXIT WHEN v_cursor%NOTFOUND;
i_counter := i_counter + 1;
--DBMS_OUTPUT.PUT_LINE(v_value ); ** Overflow Error encountered
END LOOP;
DBMS_OUTPUT.PUT_LINE('COUNT: ' || i_counter);
CLOSE v_cursor;
END;
Код VB6, вызывающий
Set adoConnection = New ADODB.Connection
With adoConnection
.ConnectionString = strConnection$
.Open
End With
'Prepare rscommand and execute stored procedure
Set rsCommand = New ADODB.Command
With rsCommand
.CommandType = adCmdStoredProc
.CommandText = 'SP_some'
End With
rsCommand.Parameters.Append rsCommand.CreateParameter("P_IN", _
adVariant, adParamInput, Len('PleaseWork'), 'PleaseWork')
'rsCommand.Parameters.Append rsCommand.CreateParameter("P_RECORDSET", adIUnknown, adParamOutput, 500) '**not sure required or not
adoRecordSet.CursorLocation = adUseClient
adoRecordSet.Open rsCommand, adoConnection, adOpenKeyset, adLockOptimistic
Кто-нибудь может пролить столь необходимый мне свет ???
Пожалуйста, помогите. Большое спасибо.
История:
До этого он выдавал ошибку переполнения при использовании rsCommand для открытия набора записей. и решение было использовать cursortype и locktype. Отсюда и эта ошибка.