Как написать процедуру, которая создает представление в зависимости от его параметра в SQL Server 2005 - PullRequest
0 голосов
/ 19 августа 2009

Я хотел бы написать процедуру, которая создает представление в зависимости от его параметра в SQL Server 2005.

В общем, это должно выглядеть так:

CREATE PROCEDURE testprocedure
@clientid float
as
create view testview as 
select * from deliveries where clientid=@clientid

(но это не работает, выдает ошибку: неправильный синтаксис рядом с ключевым словом 'view'.)

Возможно ли это и как?

Ответы [ 2 ]

3 голосов
/ 19 августа 2009

попробовать:

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
1 голос
/ 19 августа 2009

Не уверен, что я бы порекомендовал это как решение любой проблемы, но вы можете попробовать что-то вроде этого: (динамический sql)

CREATE PROCEDURE testprocedure

@ clientid float

в

ОБЪЯВИТЬ @sql varchar (8000) set @sql = ''

SET @sql = @sql + 'создать представление testview как'

SET @sql = @sql + 'выбрать * из поставок, где clientid = @ clientid'

SET @sql = @sql + cast (@clientid as varchar (50))

EXEC (@sql)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...