2010-08-18 104 views
2

是否可以從用戶獲取變量的輸入?在Sql server中用戶聲明變量

舉例: 如何獲取用戶的名字以便在我的腳本中使用它來從我的員工表中選擇它。

我現在我怎麼聲明一個變量但不知道如何得到它鍵入該腳本的用戶

回答

1
SELECT @YourVariable = FirstName 
    FROM Employee 
    WHERE Id = @SomeId 

可以SQLCMD使用http://msdn.microsoft.com/en-gb/library/ms162773.aspx,所以你可以在命令行中指定變量

SQLCMD -iyourscript.sql -v yourvar = yourvalue

和在腳本

SELECT @YourVariable = FirstName 
    FROM Employee 
    WHERE Id = ${yourvar} 
+0

這樣我可以選擇一個名字爲@yourvariable。 但是我正在尋找來自用戶 而不使用表格的直接輸入 – Harm 2010-08-18 08:32:36

+0

@Harm,在您的上下文中什麼是「用戶的直接輸入」? – 2010-08-18 08:49:31

+0

這意味着運行腳本的用戶必須使用密鑰鍵輸入他的名字,然後輸入。 傷害 – Harm 2010-08-18 09:19:15

1

您可以執行類似於存儲過程所要求的操作。啓動它們如下:

CREATE PROCEDURE [dbo].[NameOfStoredProcedure] 
(
    @cTableName  varchar(75), -- name of the table 
    @iTopLevelId   int = 0  -- Id parameter 
) 
AS 
etc 

然後,當從Management Studio執行存儲過程時,將出現一個對話框,要求輸入參數。

下面是過程的演練:http://www.mssqltips.com/tip.asp?tip=1375

+0

嗨,我用了以下內容: CREATE PROCEDURE testing ( @cTableName varchar(75), - 表的名稱 @iTopLevelId INT = 0 - Id參數 ) AS 打印@cTableName 打印@iToplevelId EXECUTE測試 但我只得到了如下因素的錯誤消息:消息201,級別16,狀態4,過程測試,行0 過程或函數'testing'需要參數'@cTableName',它沒有提供。 什麼問題? 傷害 – Harm 2010-08-18 08:57:40

+0

@Harm。而不是'執行測試',右鍵單擊存儲過程並選擇執行 – PaulG 2010-08-18 09:33:32

+0

不幸的是,我得到了同樣的錯誤。 是否有可能我需要其他權利在Sql Server – Harm 2010-08-18 09:50:24