1

Visual Basic 6 を使用して Oracle 11g に接続しています。はい、データベースに正常に接続できます。問題は、データベースからレコードセットを受け取ることです。以下のような oracle パッケージを作成しました。

パッケージ:

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;"

そして、パラメーターに関するエラーが表示されます。エラーメッセージが韓国語で書かれているので、すぐには書けません。私を理解してください。誰でもこの問題を解決できますか?

4

1 に答える 1

2

そこには追加のパラメーターがあります。その 3 番目のパラメーターに何も追加しようとしないでください。動作するはずです。設定する必要があることに注意してくださいCmd.Properties("PLSQLRSet") = TRUE

于 2011-10-28T01:40:10.593 に答える