2009-08-19 64 views
0

我想編寫創建取決於其在SQL Server 2005如何編寫創建取決於其在SQL Server參數2005

眼觀參數該視圖的過程該視圖的過程,這應該看起來像這樣的:

CREATE PROCEDURE testprocedure 
@clientid float 
as 
create view testview as 
select * from deliveries where [email protected] 

(但是,這並不工作,它給人的錯誤:不正確的語法關鍵字「視圖」附近)。

是否可能,如何?

+1

到底爲什麼你要創建一個存儲過程中的視圖?? 要麼你有選擇的意見,或者你會在SQL服務器手動創建這些,然後查詢他們.....什麼好可能來自在存儲過程中創建一個視圖? – 2009-08-19 15:45:39

+0

我的更一般的問題是我需要在兩個查詢的結果之間做一個內部連接。爲了獲得這個結果,我正在考慮的解決方案是將兩個請求的結果存儲在視圖中,然後將它們結合起來。我對其他想法非常感興趣。 – madewulf 2009-08-19 15:48:28

+0

@madewulf,聽起來像一個帶有連接和WHERE子句的常規查詢。用你真正想要做的事發表另一個問題...... – 2009-08-19 15:51:18

回答

3

嘗試:

create procedure testprocedure 
@clientid float 
as 
declare @query varchar(8000) 
set @query='create view testview as select * from deliveries where clientid='+CONVERT(varchar(20),@clientid) 
IF EXISTS (SELECT object_id FROM sys.views WHERE object_id = OBJECT_ID('testview')) 
BEGIN 
    DROP VIEW testview 
END 
exec (@Query) 

go 
+0

大聲笑。我知道,你打了我3秒。 +1可以更快地抽籤。 ;-) – 2009-08-19 18:30:00

1

不知道,我會推薦這作爲解決什麼樣的問題,但你可以嘗試這樣的事情:(動態SQL)

CREATE PROCEDURE testprocedure

@clientid浮

作爲

DECLARE @sql VARCHAR(8000)設置@sql = ''

SET @sql = @sql + '創建視圖testview爲'

SET @sql = @sql +「SELECT * FROM交付其中的clientid = @clientid'

SET @sql = @sql +投(@clientid爲varchar(50))

EXEC(@sql)

+0

+1,我想到了同樣的事情 – 2009-08-19 15:58:10

相關問題