2016-09-13 7 views
0

Ich hatte Wert codiert, die in vielen stored procedures verwendet wurden, so eine globale Variable (auf Datenbankebene), und dass in den stored procedure, all verwenden, um zu erstellen, wenn die Änderungen dann wieder den Wert dieser Variablen kommt nur ändern müssen Auswirkungen auf die gesamte Logik der Stored Procedure. durch globale Variable ich meine: @@ Fehler, @@ ROWCOUNT oder etc.Wie deklariert GLOBAL Variable in SQL Server?

bitte schlagen Sie vor, wenn anders herum.

+0

Es gibt keine Möglichkeit, globale Variable in SQL-Server zu deklarieren – Sami

+0

Was möchten Sie tun? "Globale Variablen" haben für eine Datenbank keine Bedeutung. Sie können die Konfiguration speichern, aber es wäre * sehr * seltsam, wenn sich das Verhalten einer gespeicherten Prozedur automatisch ändert, wenn sich eine Konfiguration ändert. Es ist besser, diese Konfiguration als Parameter zu übergeben –

+0

Auch wenn Sie das Gegenteil denken - Sie brauchen keine globalen Variablen. Sie sind böse, sie könnten dich töten :) –

Antwort

3

Sie können eine Tabelle erstellen und dort Werte speichern. Dann kann jeder SP, der den Wert benötigt, diese Tabelle abfragen. Ich würde normalerweise empfehlen, auf eine Zeile und mehrere Spalten zu fixieren (so dass jede Spalte, die eine "globale Variable" darstellt, einen geeigneten Datentyp haben kann).

z.

CREATE TABLE Globals (
    X char(1) not null, 
    GlobalVar1 varchar(250) not null, 
    GlobalVar2 int not null, 
    constraint PK_Globals PRIMARY KEY (X), 
    constraint CK_Globals_Single CHECK (X='X') 
) 

Und dann die Zeile einzufügen:

INSERT INTO Globals (X,GlobalVar1,GlobalVar2) 
VALUES ('X','[email protected]',32) 

Und es dann danach aktualisieren. Sie können dann entweder spezifische Spaltenwerte in eine lokale Variable in der gespeicherten Prozedur einlesen oder sich einfach zu dieser Tabelle verbinden, je nachdem, was sich am besten anfühlt.

+1

Oder verwenden Sie Extender-Eigenschaften. Hängt davon ab, was das OP machen möchte - es wäre sehr seltsam, wenn sich das Verhalten einer gespeicherten Prozedur automatisch ändert. Bessere gespeicherte Prozedurparameter verwenden, um eine solche Konfiguration zu übergeben, egal wo sie gespeichert ist. –

+0

@PanagiotisKanavos - Ich habe dies zuvor für "config" Style-Daten verwendet - wo wir ein paar magische Zahlen oder Werte benötigen, die mehr als ein gespeicherter proc benötigt Wert darauf legen. Es ist nicht die einzige Option, aber es kann ziemlich gut für diese Art von Daten arbeiten, wo es vielleicht ein paar Mal pro Jahr geändert werden muss. –

+0

Damien_The_Unbeliever wie du das getan hast, kannst du bitte teilen. Wir haben die gleiche Situation, in der in einem Jahr verändert wurde. – greesh

Verwandte Themen