Re[4]: Передача массивов в хранимую процедуру Oracle через A
От: Igor_from_Kiev Украина  
Дата: 07.02.03 11:06
Оценка: 1 (1)
Здравствуйте, Коваленко Дмитрий, Вы писали:

КД>Код на С++ вроде правильный...

КД>Может это, для начала напишешь и заставишь работать маленький тест на VB ?
КД>С массивами ADO (начиная с 2.5) работает без проблем.

Написал новую хранимую процедуру WRITE_BSTR_ARRAY
И код ее вызова на VB

Dim OraConn As Connection
Set OraConn = New Connection
OraConn.CursorLocation = adUseClient
OraConn.Open "Provider=OraOLEDB.Oracle;Data Source=second;PLSQLRSet=1;", "PUMA", "puma", 0
Dim OraCommand As Command
Set OraCommand = New Command
OraCommand.ActiveConnection = OraConn
OraCommand.CommandText = "WRITE_BSTR_ARRAY"

Dim pprmBinaryVal As Parameter
Dim arrVal(0 To 9) As String
'пробовал также Dim arrVal(1 To 10) As String

Dim x As Long

For x = LBound(arrVal) To UBound(arrVal)
arrVal(x) = CStr(x) & ":" & CStr(Time)
Next x


Set pprmBinaryVal = OraCommand.CreateParameter("mas", adArray + adBSTR, adParamInput)


OraCommand.Parameters.Append pprmBinaryVal
pprmBinaryVal.Value = arrVal


OraCommand.Execute , , adCmdStoredProc


И все равно получаю ту же ошибку.
Может проблема не в C++ и VB, а в Oracle?
Я с ним недавно работаю и может не знаю как там правильно с массивами работать
Но я пробовал даже самую простую хр. процедуру, где сам массив даже не используется.
Описание типа
CREATE TYPE "PUMA"."VBSTR" AS VARRAY (10) OF VARCHAR2(255)

процедура

CREATE OR REPLACE PROCEDURE "PUMA"."WRITE_BSTR_ARRAY" (mas
IN VBSTR)
IS
BEGIN
UPDATE PUMA.TEST_ARRAY SET iid = 0;
END WRITE_BSTR_ARRAY;

Может, проблема в неправильной работе с Oracle?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.