2009-07-24 116 views
1

我想爲我的sql服務器數據庫生成隨機數據。我創建了一個存儲過程,其中需要生成的字符串的長度,但問題是它不會允許我在插入語句中調用它。插入語句中的存儲過程

insert into table1 (varchar_data,int_data) value ((sp_GenerateRandomString 4),CAST(RAND() * 10 AS INT) % 6 + 1) 

也這是行不通的

insert into table1 (varchar_data,int_data) select ((sp_GenerateRandomString 4),CAST(RAND() * 10 AS INT) % 6 + 1) 

回答

3

您應該使用用戶定義的函數,而不是的存儲過程。存儲過程不能在表達式中使用,但函數可以。

一個很好的介紹可以在這裏找到:http://www.sqlteam.com/article/user-defined-functions

+0

但UDF不容許UPDATE – bjan 2012-11-21 13:22:03

+0

@bjan爲什麼會在這種情況下,一個問題? – 2012-11-21 22:33:25

+0

雖然它與這個問題沒有關係,但是如果你的sp正在執行更新語句呢? – bjan 2012-11-22 06:08:47

0
INSERT INTO ... EXEC sp_procedure 
+1

它不能在sql server 2000上工作,請你解釋一下更多 – bjan 2012-11-21 13:21:23

+0

這是一個很差的答案@Remus。你需要解釋提問者所面臨的問題,以及你的解決方案如何解決這個問題。 – thomasfedb 2013-07-21 08:39:05