SQL用一个变量来代表多个表,所有操作都直接对这个表变量进行操作,省去反复修改表名的麻烦,如何编写? 5
SQL中要对很多个表进行一系列相同的操作(select,update之类的),想用一个变量来代表这个表,然后所有操作都直接对这个表变量进行操作,省去反复修改表名的麻烦。...
SQL中要对很多个表进行一系列相同的操作(select,update之类的),想用一个变量来代表这个表,然后所有操作都直接对这个表变量进行操作,省去反复修改表名的麻烦。
展开
3个回答
展开全部
一个表变量只能存一个表的数据,不能多个的
追问
例如,对表proj_collecting进行一系列操作,代码中,proj_collecting多次被用到,但proj_collecting表修改完了,可能是表cnt_m,表pay_amt_m,表proj_bal……等等。每换一个表,就得按^+F来替换一回表名,实在麻烦,有没有办法设一个变量(如:表变量=“我设定的表名")来代表这个表,每次只改这个变量的值,而其它代码不动?
追答
真是不建议你这样做,因为你这样操作的话要加事务的,不加事务有一处报错,其它地方没有报的就执行成功了,还是一个表一个表的修改吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
要用动态sql
sqlserver里面是这样写的
declare @tablename nvarchar(50);
declare @sql nvarchar(max);
set @tablename='表名'
set @sql='select * from ' +@tablename +' where 1=1'
exec(@sql)
sqlserver里面是这样写的
declare @tablename nvarchar(50);
declare @sql nvarchar(max);
set @tablename='表名'
set @sql='select * from ' +@tablename +' where 1=1'
exec(@sql)
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把要修改的表名存放在一张表里面,使用动态SQL操作
追问
具体语句如何写?能写个例子吗?谢谢
追答
如果是手工操作,不需要通过程序运行
select 'update ' || tab_name || ' set columnA = *** where ....' from table;
这个语句可以生成一批update的SQL,手工运行一下就好
如果是通过程序,需要设定一个变量和游标, 用的是PL/SQL,如需其它语言,请自行修改
declare
cursor get_data for
select tab_name from table;
v_sql varchar2(1000);
begin
for cc in get_data loop
v_sql := 'update ' || cc.tab_name || ' set columnA = *** where .....';
execute immediate v_sql;
end loop;
end;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询