【发布时间】:2014-10-14 14:04:55
【问题描述】:
所以我创建了一个使用动态 SQL 生成动态视图的过程,但我使用了两个 sql 执行:一个用于 if 子句,一个用于 else,应该可以将它们全部放在一个 SQL 字符串下,或者我是错误的?因为我试过了,一遍又一遍地出错。我在编写动态 sql 方面不是最好的,所以这可能是我的错误或无法完成,我在尝试这样做时浪费了时间?
create procedure test_view
(@table_name varchar(30))
as
BEGIN
declare@ sqlQuery varchar(100)
if exists(select 1 from sp_iqview('v_anon_' + @table_name) where view_name = 'v_anon_' + @table_name)
begin
set@ sqlQuery = ('drop view ' + 'v_anon_' + @table_name)
EXECUTE(@sqlQuery)
end
else
begin
set@ sqlQuery = ('CREATE VIEW ' + 'v_anon_' + @table_name + ' AS SeLECT * FROM ' + @table_name)
EXECUTE(@sqlQuery)
select@ sqlQuery
end
END
【问题讨论】:
-
也许要添加一些有关该过程的内容,如果执行,她会查看您数据库中的任何表。