これは私の一部では単純な失敗かもしれませんが、どこでどのように判断できません。 私はたくさんのことをしているWindowsサービスをコーディングしてきました。その1つは、ストアドプロシージャを使用してMS Sql 2005データベースからデータを挿入して取得することです。ストアドプロシージャは何も返しません。
次のコードは、Windowsサービスの一部であり、現在はWindowsフォームでもあり、両方が同じ空の結果を生成します。
try
{
SqlCommand cmd = new SqlCommand("U_RfId_ProductNumberGet", connectionRFID);
cmd.CommandType = System.Data.CommandType.StoredProcedure;
//SqlParameter paramProd = new SqlParameter();
SqlParameter paramOut = new SqlParameter();
paramOut.ParameterName = "@ProductInformation";
paramOut.Direction = System.Data.ParameterDirection.Output;
paramOut.SqlDbType = System.Data.SqlDbType.VarChar;
paramOut.Size = 50;
cmd.Parameters.Add(paramOut);
cmd.Parameters.AddWithValue("@ProductNumber", content); //content = "1" for testing
connectionRFID.Open();
textBox1.Text = (String)paramOut.Value;
//cmd.Parameters["@ProductInformation"].Value.ToString();
connectionRFID.Close();
}
catch (Exception ex)
{ textBox1.Text = ex.Message;
connectionRFID.Close();
}
コードが呼び出しているSPがあります。私はスカラ出力パラメータの代わりに結果セットを返すようにそれを変更しようとしたし、SPへの呼び出しが動作しますが、私はスカラー値を使用したいと思います。
CREATE PROCEDURE U_RfId_ProductNumberGet
@ProductInformation varchar(50) OUTPUT,
@ProductNumber varchar(8)
AS
BEGIN TRAN
SET NOCOUNT ON;
BEGIN
SELECT @ProductInformation
= CAST(vareNummer AS varchar(10))
+ '-' + CAST(vareTekst AS varchar(30))
FROM VareNummerVareTekst
WHERE ProductNumber = @ProductNumber
END
COMMIT TRAN
注:SQL Management StudioでSPを実行すると、有効な結果が得られます。
誰でも私が忘れてしまったことに気づくでしょうか?
あなたはなぜあなたが選択操作にトランザクションを使用しているコマンド –
を実行しませんでしたか? –
@Baboonそれは、サービスが実行されるSPを作った私ではない。私のSP名を入力し、入力として与えて出力として得るものを提供した会社のデータベースマネージャー。同じように動作するテスト目的のために自分自身(これは展示されているもの)を作りました。 – GoD1x