prabhakar78 Ответов: 1

Как вызвать хранимую процедуру oracle из VB.NET


Привет я создал процедуру select в oracle и она будет отлично работать в бэкэнде
но когда я вызываю его vb.net он будет отображать сообщение об ошибке, как это

PLS-00306: wrong number or types of arguments in call to 'PLP_MYAPP_SELECT1' ORA-06550: line 1, column 7: PL/SQL: Statement ignored



моя процедура такова

создайте или замените процедуру plp_myapp_select1(my_flag в varchar2, p_userid в user_master. user_id%type, userid_out out varchar2,p_panno в OTC_REGISTRAION. PANNUMBER%type, panid_out out sys_refcursor,company_out out varchar2)
является
v_id varchar2(40);
начать
если имя пользователя my_flag = '' тогда
выберите user_id в userid_out из user_master, где user_id=p_userid;
dbms_output.put_line(v_id);
тогда elsif my_flag = 'validatepan'
откройте panid_out для выбора pannumber из OTC_REGISTRAION, где pannumber =p_panno;
тогда elsif my_flag = 'companyname'
выберите companyname в company_out из OTC_INS_COMPANY;
конец, если;
конец;


и в vb.net я называю эту процедуру так


УМК.Соединение = cn
УМК.CommandType = Данные.Командный тип.Хранимая процедура

УМК.Свойства commandtext = "plp_myapp_select1"
Dim флаг как новый OracleParameter("my_flag", OracleDbType. Varchar2)
Флаг.Направление = ParameterDirection.Ввод
Флаг.Размер = 50
Flag. Value = " имя пользователя"
УМК.Параметры.Добавить(Флаг)

  Dim qrySerial As New OracleParameter("p_userid", OracleDbType.Varchar2)
        qrySerial.Direction = ParameterDirection.Input
        qrySerial.Value = user_id.ToUpper
        cmd.Parameters.Add(qrySerial)
        Dim OutPut As New OracleParameter("userid_out", OracleDbType.Varchar2)
        OutPut.Direction = ParameterDirection.Output
        OutPut.Size = 400
        'cmd1.Parameters.Add(OutPut)
        cmd.Parameters.Add(OutPut)
       
        Dim result As Integer = cmd.ExecuteNonQuery()
        ada = New OracleDataAdapter(cmd)
        ada.Fill(ds)

what exactly wrong with my coding .if anyaone have ideas just give some inputs

What I have tried:

i tried to call this procedure from vb.net .in the back end it's working fine

1 Ответов

Рейтинг:
1

Suvendu Shekhar Giri

-- Прежде всего, постарайтесь правильно сформулировать свой вопрос, чтобы люди могли понять, что вы написали.
-- В определении хранимой процедуры вы предоставили 6 параметров, из которых 3 являются входными и 3 исходящими параметрами
-- В вашем коде вы указали значение только 2 в параметрах

Проверьте свой код еще раз и внесите необходимые изменения в параметры.

Надеюсь, это поможет :)


prabhakar78

привет я использую флаг, если имя флаг 'имя пользователя' затем я собираюсь пройти ид_пользователя как
вход, а затем получить выход, так что в этом флаге я передаю только два prameters .in backend
он скомпилирован правильно.

CHill60

Просто потому, что что-то скомпилировано, это не значит, что оно будет работать! Во время выполнения вы вызвали процедуру, о которой система ничего не знает до времени выполнения и, как сказал Сувенду, вы не предоставили достаточно параметров. Вам нужно передать 3 входных параметра и 3 выходных параметра в соответствии с PL/SQL независимо от того, как вы будете с ними потом возиться