2012-09-27 33 views
1

可能重複:
Cast integer and concatenate to varchar in TSQL命名存儲過程的參數和串聯

你怎麼稱呼使用具有更復雜的數值命名參數的存儲過程。這是一個有點炮製例如:

EXEC MyStoredProc @Param1='My name is: '[email protected] 

或者:

EXEC MyStoredProc @Param1=CONCAT('My name is: ',@Name) 

我得到一個錯誤試圖串連文字串「我的名字是:」與變量@Name。括號不會幫助解決這個問題。這是T-SQL的限制嗎(即,當使用命名參數時,等號後面的表達式必須是單個文字或變量)?

感謝

+0

爲什麼你不能從源文件中傳入串接字符串? – Oded

+0

限制SQL Server。請參閱上面鏈接的連接項目。 –

回答

5

一種方式

declare @Var1 varchar(50) 
select @Var1 = 'My name is: '[email protected] 

EXEC MyStoredProc @[email protected] 

也是如此與功能以及

你不能做到這一點

EXEC MyStoredProc @Param1=getdate() 

你需要做的

declare @Var1 datetime 
select @Var1 = getdate() 

EXEC MyStoredProc @[email protected] 
+1

你可以調用* some *函數inline('@@'前綴 - 所以'@@ identity'工作,但'scope_identity()'不) –

+0

正確。儘管我認爲@@ more作爲系統變量函數 – SQLMenace

+0

用標量函數調用示例更新... –