sql >> Databasteknik >  >> RDS >> Sqlserver

Lagrad procedur - returnera identitet som utdataparameter eller skalär

Ett annat alternativ skulle vara som returvärde för den lagrade proceduren (jag föreslår dock inte detta, eftersom det vanligtvis är bäst för felvärden).

Jag har inkluderat det som både när det infogar en enda rad i fall där den lagrade proceduren förbrukades av både andra SQL-procedurer och ett gränssnitt som inte kunde fungera med OUTPUT-parametrar (IBATIS i .NET tror jag):

CREATE PROCEDURE My_Insert
    @col1            VARCHAR(20),
    @new_identity    INT    OUTPUT
AS
BEGIN
    SET NOCOUNT ON

    INSERT INTO My_Table (col1)
    VALUES (@col1)

    SELECT @new_identity = SCOPE_IDENTITY()

    SELECT @new_identity AS id

    RETURN
END

Utdataparametern är lättare att arbeta med i T-SQL när man anropar från andra lagrade procedurer IMO, men vissa programmeringsspråk har dåligt eller inget stöd för utdataparametrar och fungerar bättre med resultatuppsättningar.



  1. Entity Framework skapar ett tabellnamn i plural, men vyn förväntar sig ett singular tabellnamn?

  2. Ansluter SquirreL SQL till Microsoft Excel

  3. Topp 9 databashanteringssystem för Joomlas mallar

  4. Är Microsoft Access lätt att lära sig?