例如:
create or replace procedure bhd(err out VARCHAR2,
ret out VARCHAR2,
itemid number,
dn VARCHAR2,
status VARCHAR2,
quantity_mfg number,
vendor1 VARCHAR2,
vendor2 VARCHAR2,
vendor3 VARCHAR2,
vendor4 VARCHAR2) is g_org_id number := 84;end bhd;
/以上过程itemid,dn,status,quantity_mfg,vendor1,vendor2,vendor3,vendor4是已知的,请教在VB中怎么样调用才能取出变量err和ret的值
create or replace procedure bhd(err out VARCHAR2,
ret out VARCHAR2,
itemid number,
dn VARCHAR2,
status VARCHAR2,
quantity_mfg number,
vendor1 VARCHAR2,
vendor2 VARCHAR2,
vendor3 VARCHAR2,
vendor4 VARCHAR2) is g_org_id number := 84;end bhd;
/以上过程itemid,dn,status,quantity_mfg,vendor1,vendor2,vendor3,vendor4是已知的,请教在VB中怎么样调用才能取出变量err和ret的值
存储过程:
CREATE OR REPLACE PROCEDURE prc_Call_From_VB(pVar1 VARCHAR2, pVar2 VARCHAR2, pAll OUT VARCHAR2) IS
BEGIN
pAll := pVar1 || pVar2;
END prc_Call_from_VB;VB代码:
Private Sub cmdCallPrc_Click()
On Error GoTo cmdCallPrcErr:
Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim cmd As New ADODB.Command
cnn.ConnectionString = "Provider=OraOLEDB.Oracle.1;Password=chanet;Persist Security Info=True;User ID=chanet;Data Source=oradb"
cnn.Open
With cmd
.ActiveConnection = cnn
.CommandType = adCmdText
.CommandText = "{CALL prc_Call_From_VB(?,?,?)}"
.Parameters.Append .CreateParameter("var1", adVarChar, adParamInput, 100, "测试......")
.Parameters.Append .CreateParameter("var2", adVarChar, adParamInput, 100, "成功.")
.Parameters.Append .CreateParameter("v_all", adVarChar, adParamOutput, 100)
End With
rst.CursorType = adOpenStatic
rst.LockType = adLockReadOnly
Set rst.Source = cmd
rst.Open
MsgBox cmd.Parameters.Item("v_all") Set rst = Nothing
Set cmd = Nothing
Exit SubcmdCallPrcErr:
Set cmd = Nothing
Set rst1 = Nothing
MsgBox Err.Description
End Sub
cnn.ConnectionString = "Provider=OraOLEDB.Oracle.1;Password=chanet;Persist Security Info=True;User ID=chanet;Data Source=oradb"请麻烦你把报错的信息完整地贴上来~
例子:
存储过程:
CREATE OR REPLACE PROCEDURE prc_Call_From_VB(pVar1 VARCHAR2, pVar2 VARCHAR2, pAll OUT VARCHAR2) IS
BEGIN
pAll := pVar1 || pVar2;
END prc_Call_from_VB;VB代码:
Private Sub cmdCallPrc_Click()
On Error GoTo cmdCallPrcErr:
Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim cmd As New ADODB.Command
cnn.ConnectionString = "Provider=OraOLEDB.Oracle.1;Password=chanet;Persist Security Info=True;User ID=chanet;Data Source=oradb"
cnn.Open
With cmd
.ActiveConnection = cnn
.CommandType = adCmdText
.CommandText = "{CALL prc_Call_From_VB(?,?,?)}"
.Parameters.Append .CreateParameter("var1", adVarChar, adParamInput, 100, "测试......")
.Parameters.Append .CreateParameter("var2", adVarChar, adParamInput, 100, "成功.")
.Parameters.Append .CreateParameter("v_all", adVarChar, adParamOutput, 100)
End With
rst.CursorType = adOpenStatic
rst.LockType = adLockReadOnly
Set rst.Source = cmd
rst.Open
MsgBox cmd.Parameters.Item("v_all") Set rst = Nothing
Set cmd = Nothing
Exit SubcmdCallPrcErr:
Set cmd = Nothing
Set rst1 = Nothing
MsgBox Err.Description
End Sub
错误提示信息
ORA-06550: 第 1 行, 第 7 列:
PLS-00201: 必须说明标识符 'PRC_CALL_FROM_VB'
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored
我把你写的存储过程复制到 方案SYS下