Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Menggunakan parameter output prosedur tersimpan di C#

Saya sedikit memodifikasi prosedur tersimpan Anda (untuk menggunakan SCOPE_IDENTITY ) dan tampilannya seperti ini:

CREATE PROCEDURE usp_InsertContract
    @ContractNumber varchar(7),
    @NewId int OUTPUT
AS
BEGIN
    INSERT INTO [dbo].[Contracts] (ContractNumber)
    VALUES (@ContractNumber)

    SELECT @NewId = SCOPE_IDENTITY()
END

Saya mencoba ini dan berfungsi dengan baik (dengan prosedur tersimpan yang dimodifikasi itu):

// define connection and command, in using blocks to ensure disposal
using(SqlConnection conn = new SqlConnection(pvConnectionString ))
using(SqlCommand cmd = new SqlCommand("dbo.usp_InsertContract", conn))
{
    cmd.CommandType = CommandType.StoredProcedure;
        
    // set up the parameters
    cmd.Parameters.Add("@ContractNumber", SqlDbType.VarChar, 7);
    cmd.Parameters.Add("@NewId", SqlDbType.Int).Direction = ParameterDirection.Output;

    // set parameter values
    cmd.Parameters["@ContractNumber"].Value = contractNumber;

    // open connection and execute stored procedure
    conn.Open();
    cmd.ExecuteNonQuery();

    // read output value from @NewId
    int contractID = Convert.ToInt32(cmd.Parameters["@NewId"].Value);
    conn.Close();
}

Apakah ini bekerja di lingkungan Anda juga? Saya tidak dapat mengatakan mengapa kode asli Anda tidak berfungsi - tetapi ketika saya melakukannya di sini, VS2010 dan SQL Server 2008 R2, kode itu berfungsi dengan sempurna....

Jika Anda tidak mendapatkan kembali nilai - maka saya menduga tabel Anda Contracts mungkin tidak benar-benar memiliki kolom dengan IDENTITY properti di atasnya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 6 Cara Memeriksa Ukuran Database di SQL Server menggunakan T-SQL

  2. MS SQL ON DELETE CASCADE beberapa kunci asing menunjuk ke tabel yang sama?

  3. Cara Membuat Kunci Utama Komposit di SQL Server (Contoh T-SQL)

  4. Cara Menampilkan Tanggal dalam Format Jerman di SQL Server (T-SQL)

  5. Instal Azure Data Studio di Ubuntu 18.04