SQL Server : verwenden Sie bigint-Variablen in der gespeicherten Prozedur

Sehr einfach, ich rufe ein Verfahren, um die Primärschlüssel aus einer Tabelle, die Speicherung der Schlüssel in einer Variablen, so dass ich kann, dann verwenden Sie zum einfügen in einer anderen Tabelle muss ein Fremdschlüssel. Die variable ist das, was ich erwartet es zu sein, aber wenn ich es benutze, es gibt nichts zurück.

Nach dem Versuch, es zu betrachten, es scheint zu sein, dass Ihr ein Problem mit der WHERE - Klausel und der Verwendung der variable

DECLARE @ClientId bigint;

SELECT * 
FROM Testing.dbo.Client 
WHERE ClientID = @ClientId

@ClientId Wert ist 2

Es ist ein Wert von 2 für eine als eine client-ID in der Tabelle

Wenn ich diesen starte, bekomme ich das Ergebnis erwarte ich

select * 
from Testing.dbo.Client 
where ClientID = 2

Dies ist, wo es festgelegt wird,

DECLARE @ClientId int;
EXECUTE @ClientId = Testing.dbo.GetClientID @ClientName;

Wo GetClientID ist folgende

USE Testing
GO
CREATE PROCEDURE GetClientId
    @ClientName nvarchar(50)
AS 
    SELECT ClientID FROM Testing.dbo.Client WHERE ClientName = @ClientName
GO

Gearbeitet, ein bisschen mehr jetzt, so die ClientId wird nicht immer gesetzt nach Aufruf der proc

  • wo/wie legen Sie den Wert von @ClientId? Weil in deinem snippet, du bist nur zu deklarieren, nicht der Zuweisung eines Wertes.
  • Während Sie initialisieren kann in der declare wie in der Antwort unten, würden Sie verwenden in der Regel set wie in set @ClientId = 2;. In der Tat, die alte Versionen von SQL Server können Sie nicht tun, die inline-Initialisierung.
Schreibe einen Kommentar