SSMSクエリからレコードを正しく返すストアドプロシージャがあります。ここでストアドプロシージャはC#から呼び出されたときにレコードを返しませんが、SSMSで機能します。
は、ストアドプロシージャです:
このようなSSMSクエリからこれを呼び出すCREATE PROCEDURE [dbo].[q_CheckRecords]
@ItemIDS AS VARCHAR(40)
AS
BEGIN
SET NOCOUNT ON
SELECT *
FROM q_Warehouse80_OOS_ItemsNeedingNotification
WHERE item_id = @ItemIDS
END
:
exec [q_CheckOOSWarehouse80ItemsNeedingNotification] 'B30-R10000-B001'
私は保存を呼び出すために、このC#コードを使用するとき、それが正しくしかし、行を返します。プロシージャ、私は返される行が決して得られません。
SqlCommand cmd = null;
SqlDataReader myReader = null;
System.Data.SqlClient.SqlConnection conn = null;
conn = new System.Data.SqlClient.SqlConnection("Data Source=" + sSessionServer + ";database=" + sSessionDatabase + "; Integrated Security=SSPI");
String SQL = "[q_CheckOOSWarehouse80ItemsNeedingNotification]";
cmd = new SqlCommand();
cmd.CommandText = SQL;
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Connection = conn;
cmd.Parameters.Add("@ItemIDS", SqlDbType.VarChar).Value = ItemsToBeChecked;
conn.Open();
myReader = cmd.ExecuteReader();
// check to see if any rows were returned.
if (myReader.HasRows)
{
while (myReader.Read())
{
// code to read fields in returned rows here
}
}
conn.Close();
C#は、ストアドプロシージャに渡されるデータ型を定義する方法に問題があるように見えますが、私はこの問題を解決する方法についてのオンライン情報を見つけていません。
私はそれが
@ItemIDS AS VARCHAR(40)
AS
BEGIN
SET NOCOUNT ON
select * from q_Warehouse80_OOS_ItemsNeedingNotification where item_id = 'B30-R10000-B001'
END
「ハードコード化された」ですので、ストアドプロシージャを変更した場合、それにC#の呼び出しが正しく行が「発見」されたことを示します。
ご協力いただければ幸いです。
ItemsToBeChecked変数の種類は何ですか? – SergeyS
角かっこなしで試してください:String SQL = "q_CheckOOSWarehouse80ItemsNeedingNotification"; – tonakai
コードを正しくフォーマットできますか?目には痛いです。 – ajeh