Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Korzystanie z parametrów wyjściowych procedury składowanej w języku C#

Nieznacznie zmodyfikowałem twoją procedurę składowaną (aby użyć SCOPE_IDENTITY ) i wygląda to tak:

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

    SELECT @NewId = SCOPE_IDENTITY()
END

Próbowałem tego i działa dobrze (z tą zmodyfikowaną procedurą składowaną):

// 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();
}

Czy to działa również w Twoim środowisku? Nie mogę powiedzieć, dlaczego twój oryginalny kod nie zadziała — ale kiedy robię to tutaj, VS2010 i SQL Server 2008 R2, po prostu działa bezbłędnie....

Jeśli nie otrzymasz wartości - podejrzewam, że Twoja tabela Contracts może tak naprawdę nie mieć kolumny z IDENTITY nieruchomość na nim.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak naprawić „Powiązana funkcja partycji generuje więcej partycji niż jest grup plików wymienionych w schemacie” Msg 7707 w SQL Server

  2. Usuń połączony serwer w SQL Server za pomocą T-SQL

  3. Wdrażanie obciążenia przyrostowego za pomocą przechwytywania zmian danych w SQL Server

  4. Aktualizacja SQL z row_number()

  5. Jak szybko edytować wartości w tabeli w SQL Server Management Studio?