1
Visual Basic 6を使用してOracle 11gに接続しています。 はい、正常にデータベースに接続できます。 問題は、データベースからレコードセットを受け取ることです。 私は以下のようなOracleパッケージを作成しました:Visual Basic with Oracle 11g REF CURSOR NOT working
パッケージ:
CREATE OR REPLACE PACKAGE PKG_BASECODE AS
TYPE T_CURSOR IS REF CURSOR;
--// customer
PROCEDURE CustomerCode (
I_CUST_CODE IN VARCHAR2
, I_CUST_NAME IN VARCHAR2
, customer_cursor OUT T_CURSOR
);
END PKG_BASECODE;
/
ボディ:
CREATE OR REPLACE PACKAGE BODY PKG_BASECODE AS
--// customer
PROCEDURE CustomerCode (
I_CUST_CODE IN VARCHAR2
, I_CUST_NAME IN VARCHAR2
, customer_cursor OUT T_CURSOR
)
IS
BEGIN
OPEN customer_cursor FOR
SELECT CUST_CODE AS KEYVALUE
, CUST_NAME AS DATAVALUE
FROM CUSTOMER_MASTER
WHERE CUST_CODE LIKE I_CUST_CODE || '%'
AND CUST_NAME LIKE I_CUST_NAME || '%'
ORDER BY CUST_NAME ASC
;
END CustomerCode;
END PKG_BASECODE;
/
それは、C#で素晴らしい作品。 私はすでにテスト済みです。
今、私は以下の私のVisual Basic 6のソースコードがあります。
Dim rst As ADODB.Recordset
Dim cmd As ADODB.Command
Dim input1 As ADODB.Parameter
Dim input2 As ADODB.Parameter
Dim output1 As ADODB.Parameter
Set cmd = CreateObject("ADODB.Command")
With cmd
.ActiveConnection = tmpDB_Total
.CommandText = "PKG_BASECODE.CustomerCode"
.CommandType = adCmdStoredProc
.Parameters.Append .CreateParameter("I_CUST_CODE", adVarChar, adParamInput, 10, "")
.Parameters.Append .CreateParameter("I_CUST_NAME", adVarChar, adParamInput, 50, "")
.Parameters.Append .CreateParameter("CustomerCode", adVarChar, adParamReturnValue)
Set rst = .Execute
End With
If Not rst.BOF And Not rst.EOF Then
Do Until rst.EOF
Debug.Print rst.Fields(1).Value & "," & rst.Fields(0).Value
rst.MoveNext
Loop
End If
を、接続元は以下の通りです:
tmpDB_Total.Open "Provider=OraOLEDB.Oracle;" _
& "Password=mes123;" _
& "User ID=mes;" _
& "Persist Security Info=True;" _
& "Data Source=stmdev;"
そして、私はパラメータに関するエラーの何かを受け取ります。 エラーメッセージは韓国語で書かれているため、すぐに書き込むことはできません。 ご理解ください。 誰でもこの問題を助けてくれますか?
多くのありがとう、ダン〜あなたは私の救世主です。それは完璧に働いた。 –
私はあなたの答えを受け入れる方法を知らなかった。今私は方法を見つけた。とにかく、ありがとう。 –