powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Ошибка при передаче параметра-массива из vba в процедуру oracle.
3 сообщений из 3, страница 1 из 1
Ошибка при передаче параметра-массива из vba в процедуру oracle.
    #37351757
MDmitryB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При передаче параметра возникает ошибка: "type name is invalid"
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
Dim par As ADODB.Parameter
Set par = New ADODB.Parameter
Dim params( 0  To  31 ) As String
Dim iCount As Integer
            
'заполнение массива

With par
      .Name = "p_data"
      .Type = adArray + adVarChar
      .Direction = adParamInput
      .value = params
      .Size =  32 
End With
Call Exec_Command_With_Params(db_connection, "M_PACK.Insert_Row", par)

Public Sub Exec_Command_With_Params(connection As ADODB.connection, command_text As String, command_param As ADODB.Parameter)
    Dim cmd As ADODB.Command
    Set cmd = New ADODB.Command
    With cmd
        .ActiveConnection = connection
        .CommandType = adCmdStoredProc
        .CommandText = command_text
        .Parameters.Append command_param
        .Execute  - ошибка ссылается на это место
    End With
    Set cmd = Nothing
End Sub

В oracle:
Код: plaintext
1.
2.
3.
4.
type data is varray( 32 ) of varchar2( 50 );
procedure Insert_Row(p_data IN data) as
 begin
   ...
 end

Подскажите, пожалуйста, в решении данной проблемы.
...
Рейтинг: 0 / 0
Ошибка при передаче параметра-массива из vba в процедуру oracle.
    #37351970
MDmitryB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MDmitryB,

пока что сделал параметр-строку и в oracle распарсиваю..
...
Рейтинг: 0 / 0
Ошибка при передаче параметра-массива из vba в процедуру oracle.
    #37352594
MDmitryB,
Пример получения информации о параметрах хранимой процедуры ( отсюда ):
MS SQL Server, не Oracle, но всё-таки...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Set objComm = CreateObject("ADODB.Command")
ServerName = "(local)" 'имя или IP-адрес сервера
DSN = "master" 'имя базы данных
UID = "sa" 'логин пользователя SQL-сервера
PWD = "111" 'пароль пользователя SQL-сервера
ConnectString = "Provider=SQLOLEDB;" & _
                "Data Source=" & ServerName & _
                ";Initial Catalog=" & DSN & _
                ";UID=" & UID & ";PWD=" & PWD
objComm.ActiveConnection = ConnectString
'получаем информацию о параметрах хранимой процедуры "sp_adduser"
objComm.CommandText = "sp_adduser"
objComm.CommandType =  4 
For Each Param In objComm.Parameters
    WScript.Echo "Name = " & Param.Name
    WScript.Echo "Attributes = " & Param.Attributes
    WScript.Echo "Direction = " & Param.Direction
    WScript.Echo "Size = " & Param.Size
    WScript.Echo "Type = " & Param.Type
    WScript.Echo
Next
Set objComm = Nothing
Там же , в описании объекта Command, упоминается метод Parameters.Refresh(), якобы заполняющий коллекцию Parameters на клиенте.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Ошибка при передаче параметра-массива из vba в процедуру oracle.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]