SQL Server用のストアドプロシージャを作成して、C#アプリケーションから呼び出します。ストアドプロシージャには、クエリでsp_executesql
を実行するパラメータを受け取る動的に作成されたSQLがいくつか含まれていますが、C#アプリケーションから実行すると結果が得られません。C#ストアドプロシージャの動的パラメータの使用
SQL Server Management Studioからプロシージャを呼び出すと、すべての結果が得られます。例えば
:
EXECUTE proc_getproductslist '''1'',''2'''
この作品:私はSSMSで実行した場合、私は私のストアドプロシージャ
CREATE PROCEDURE [dbo].[proc_getproductslist]
@idProducts varchar(max)
AS
BEGIN
DECLARE @SQL nvarchar(max)
SET @SQL = 'SELECT * FROM Products WHERE id IN ('[email protected] +')'
EXEC sp_executesql @SQL
END
を作成
id | Descrip
1 Pen
2 Pencil
3 Table
私のテーブルの製品を入手!私は、これは何も返さない私のC#のアプリからストアドプロシージャを呼び出すと
DataTable dt = new DataTable();
DataTable d1 = new DataTable();
using (SqlConnection cn = new SqlConnection("cnxstring"))
{
cn.Open();
SqlCommand cmd1 = new SqlCommand("proc_getproductslist", cn, sqlTran);
cmd1.CommandType = CommandType.StoredProcedure;
try
{
cmd1.Parameters.Add("@numguia", SqlDbType.VarChar).Value = "'''1'',''2'''";
SqlDataAdapter da1 = new SqlDataAdapter();
da1.SelectCommand = cmd1;
da1.Fill(d1);
}
catch (SqlException exsql)
{
try
{
sqlTran.Rollback();
}
catch (Exception exRollback)
{
}
}
catch (Exception ex)
{
}
finally
{
cn.Close();
}
return d1;
}
:しかし... C#のアプリから、これは
C#のコードを動作しません。
私はこの作業を行う方法を教えてください。
おかげCommandType = CommandType.StoredProcedure
とSelectコマンドのあなたのC#コードパラメータの名前で
最後に、(簡潔にするためのtry/catchを削除)あなたのプロシージャを呼び出すには? –