2016-04-06 15 views
0

Visual BasicでストアドプロシージャをDB2データベースから呼び出そうとしています。私はVisual Basicコードからパラメータとして変数からの入力を送信し、出力を取得してVBコードの変数に入れたいと思います。コードは、私がこれまで持って、私はここでは、IBM.Data.DB2をインポートしています私のVBコードでVisual Basicを使用してDB2ストアドプロシージャを呼び出す方法は?

CREATE PROCEDURE VendorPROCEDURE (IN p_vendor_name VARCHAR(50), 
           OUT p_name VARCHAR(25), 
           OUT p_company_name VARCHAR(50), 
           OUT p_address VARCHAR(25), 
           OUT p_csz VARCHAR(50), 
           OUT p_phone CHAR(13)) 
DYNAMIC RESULT SETS 1 
P1: BEGIN 
DECLARE v_name VARCHAR(25); 
DECLARE v_company_name VARCHAR(50); 
DECLARE v_address VARCHAR(25); 
DECLARE v_csz VARCHAR(50); 
DECLARE v_phone CHAR(13); 

SELECT RTRIM(REP_F_NAME || ' ' || REP_L_NAME), COMPANY_NAME, STREET, 
RTRIM(CITY || ', ' || STATE || ' ' || VENDOR.ZIP_CODE) AS CSZ, PHONE_NUM 
INTO v_name, v_company_name, v_address, v_csz, v_phone 
FROM SALES_REP, VENDOR, ZIP 
WHERE SALES_REP.REP_NUM = VENDOR.REP_NUM 
AND ZIP.ZIP_CODE = VENDOR.ZIP_CODE 
AND COMPANY_NAME = p_vendor_name; 

SET p_name = v_name; 
SET p_company_name = v_company_name; 
SET p_address = v_address; 
SET p_csz = v_csz; 
SET p_phone = v_phone; 

END P1 

されています:

Dim vendorName As String 
    vendorName = Vendor_ComboBox.Text 
    cmd = connectionstring.CreateCommand() 
    connectionstring.Open() 
    Dim trans As DB2Transaction = connectionstring.BeginTransaction() 
    cmd.Transaction() = trans 
    Dim reader As DB2DataReader 
    Dim procName As String = "VENDORPROCEDURE" 
    cmd.CommandType = CommandType.StoredProcedure 
    cmd.CommandText = procName 

私はどこにわからないんだけど、ここで私の店のプロシージャのコードですそこから行く。

+0

ここからですか? 'cmd.Execute'を追加してみてください。また、VBはVBAとは異なります。後者は主にMS Office製品で動作します。それに応じてタグを付けてください。 – Parfait

+0

パラメータを最初に追加するparam = new sqlparameter( "p_vendor_name"、)param.direction = cmd.parameters.add(param)などを入力して、出力パラメータの方向を変更する –

答えて

0

はそこから、このような何かをするだろう:

cmd.Parameters.Add("p_vendor_name", DB2DbType.VarChar, 50).Value = vendorName 
cmd.Parameters.Add("p_name", DB2DbType.VarChar, 25).Direction = ParameterDirection.Output 
'Etc.' 
reader = cmd.ExecuteReader() 

あなたはそのデータリーダーを使用して線でのクエリ行の結果セットを読み取ることができます。

If reader.HasRows Then 
    'Read the data here.' 
Else 
    'There is no data so act accordingly here.' 
End If 

またはあなただけのこの操作を行う可能性があります:あなたはこれを行う可能性があります

While reader.Read() 
    'Get data from current row of reader by column name or ordinal here.' 
End While 

を第2のケースでは、Read戻りFalseそれ以上のデータがそう読まないことがあり、行がない場合は、あなたがループに入ることはないので、何も起こりません。

関連する問題