sql >> データベース >  >> RDS >> Sqlserver

C# で SQL Server 出力変数を取得する

    まず第一に、それが OUTPUT パラメータの場合、 .AddWithValue は使用できません C# の場合 - 以下を使用する必要があります:

    SqlParameter outParam = cmd.Parameters.Add("@guidid", SqlDbType.Uniqueidentifier);
    outParam.Direction = ParameterDirection.Output;
      

    また、T-SQL コードでは、新しい値を出力パラメーターに割り当てる必要があります!

    ALTER PROCEDURE [dbo].[pr_Tbl_Test_Insert]
      @guidid uniqueidentifier output,
      @sname nvarchar(50)
    AS
    
    DECLARE @NewID UNIQUEIDENTIFIER
    SET @NewID = newid();
    
    -- INSERT a new row in the table.
    INSERT [dbo].[Tbl_Test]([id], [name]) VALUES(@NewID, @sname);
    
    SET @guidid = @NewID
      

    更新: これを SQL Server Mgmt Studio で実行すると、何か表示されますか?

    DECLARE @insertedID UNIQUEIDENTIFIER
    
    EXEC dbo.pr_Tbl_Test_Insert @guidid = @insertedID OUTPUT,
                                @sname = N'TestUser' -- nvarchar(50)
    
    SELECT @insertedID
      

    C# では、読み上げる必要があります ExecuteNonQuery を呼び出した後の出力パラメータの値 !

    SqlParameter outparam = cmd.Parameters.Add("@guidid",SqlDbType.UniqueIdentifier);
    outparam.Direction = ParameterDirection.Output;
    
    cmd.Parameters.AddWithValue("@sname", "mehdi");
    
    cmd.ExecuteNonQuery();
    
    Guid newlyInsertedID = new Guid(cmd.Parameters["@guidid"].Value);
    MessageBox.Show(newlyInsertedID.ToString());
      

    1. コマンドラインで外部キーチェックを無効にする

    2. 列から値を抽出し、別の列の結果を更新する方法

    3. MongoDBまたは他のドキュメント指向データベースシステムをいつ使用するのですか?

    4. promiseを使用したoracledbチェーンSQL呼び出し