因此,我制作了一个使用动态SQL进行动态视图的过程,但是我使用了两个sql执行程序:一个用于if子句,另一个用于其他子句,应该可以将所有内容都放在一个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
请尝试此查询...。这里不需要其他语句。...如果对象存在,它将直接放在第一步中。如果没有,它会创建一个新的...
create procedure test_view
(@table_name varchar(30))
as
BEGIN
declare @DropQuery varchar(100)
declare @CreateQuery varchar(100)
IF EXISTS(select 1 from sp_iqview('v_anon_' + @table_name) where view_name = 'v_anon_' + @table_name)
BEGIN
SET @DropQuery= 'drop view v_anon_' + @table_name
EXEC sp_executesql @DropQuery
END
SET @CreateQuery = 'CREATE VIEW v_anon_' + @table_name + ' AS SeLECT * FROM ' + @table_name
EXEC sp_executesql @CreateQuery
SELECT @CreateQuery
END
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句