0

いくつかのレコードを挿入した後、行に数値を出力する SQL ストアド プロシージャがあります。ただし、クエリはうまく機能し、必要なものを返します。クエリからの出力を取得して、ラベルに読み込みたいと思います。誰かが少し光を当てることができますか?ありがとう。

            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add(new SqlParameter("@spName", txt_Name.Text));
            cmd.Parameters.Add(new SqlParameter("@spSource", txt_Source.Text));
            cmd.Parameters.Add(new SqlParameter("@spDateCreated", txt_DateCreated.Text));

            paramReturnNumber = cmd.Parameters.AddWithValue("@out", SqlDbType.NVarChar);
            paramReturnNumber.Direction = ParameterDirection.Output;

            cmd.ExecuteNonQuery();

クエリ:

ALTER PROCEDURE [dbo].[usps_InsertIntoMedia]
@spName varchar(100),
@spSource varchar(100),
@spDateCreated datetime
AS
SET NOCOUNT ON;  
DECLARE @out nvarchar
BEGIN
INSERT INTO Media (Name, Source, DateCreated)
OUTPUT inserted.Number 
VALUES(@spName,@spSource,@spDateCreated )   

Select @out = Media.Number
FROM Media  
END
4

2 に答える 2

0

私は次のテクニックを使用しています:

    Hashtable ht = new Hashtable();
    foreach (SqlParameter sqlp in cmd.Parameters)
    {
         if ((sqlp.Direction == ParameterDirection.InputOutput) || 
             (sqlp.Direction == ParameterDirection.Output))
         {
             ht.Add(sqlp.ParameterName, sqlp.Value);
         }
    }
    <lblName>.Text = (string)ht["@out"];
于 2012-09-24T18:36:35.167 に答える
0

この問題の解決策は、SET ステートメントを使用して OUTPUT パラメーターを指定することでした。

于 2012-09-26T12:40:47.753 に答える