2009-08-19 66 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

相关问题