2016-09-13 27 views
0

我已經編碼,從而在許多stored procedures使用,所以創建一個全局變量(在數據庫級別)的價值和使用,在所有stored procedure, 更改是否會再來那麼只需要改變變量的值將影響所有存儲過程的邏輯。 通過全局變量我的意思是:@@ ERROR,@@ ROWCOUNT或等如何在SQL Server中聲明GLOBAL變量?

請建議,如果各地的任何其他方式。

+0

有沒有辦法在SQL Server – Sami

+0

什麼是你想做聲明全局變量? 「全局變量」對數據庫沒有意義。您可以存儲配置,但如果存儲過程的行爲在配置發生更改時自動更改,則它會非常奇怪。最好通過參數 –

+0

這樣的配置,即使你認爲相反 - 你不需要任何全局變量。他們是邪惡的,他們可以殺死你:) –

回答

3

你能在那裏創建一個和存儲的值。然後任何需要該值的SP都可以查詢該表。我通常會建議修復一行和多列(以便表示「全局變量」的每列可以具有適當的數據類型)。

E.g.

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') 
) 

,然後插入該行:

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

然後之後更新。然後,您可以將特定列值讀取到存儲過程中的局部變量中,或者只是加入到此表中,具體取決於什麼感覺最合適。

+1

或使用擴展屬性。取決於OP想要做什麼 - 如果存儲過程的行爲自動改變,那將是非常奇怪的。更好地使用存儲過程參數來傳遞這樣的配置,不管它存儲在哪裏 –

+0

@PanagiotisKanavos - 我以前用過「config」風格的數據 - 我們確實需要一些神奇的數字或值,以至於一個以上的存儲過程需要關心。這不是唯一的選擇,但它可以很好地處理這類數據,可能需要每年更改幾次。 –

+0

Damien_The_Unbeliever你是如何做到這一點,可以請你分享。 ,我們也有一年發生變化的情況。 – greesh