常用SQL查询问题

sql中修改动态表的列名
sp_rename的@objname参数可以是一个字符串,也可以是一个字符串变量.但不可以是两者的混合型.所以,如果要动态修改表,那么可参照如下形式:
declare @objname varchar(50);
set @objname='动态表名'; /*补充解释:这里的'动态表名'就是你原来的@table变量,该变量的值必须是一个明确的表名,如:'11级'*/
set @objname=@objname+'.F5';
exec sp_rename @objname,'理论','column';
注意:'11级'这样的表名是不合法的,引用时请加上中括号[],如[11级]
修改后的代码如下:
declare @objname varchar(50);
set @objname='['+动态表名+'].F5';
exec sp_rename @objname,'理论','column';

-------------------------------------------------------------------------------------------

DECLARE My_Cursor CURSOR --定义游标
FOR (SELECT * FROM dbo.MemberAccount) --查出需要的集合放到游标中
OPEN My_Cursor; --打开游标
FETCH NEXT FROM My_Cursor ; --读取第一行数据
WHILE @@FETCH_STATUS = 0----注意此处循环方式(实测可用)
  BEGIN
  --UPDATE dbo.MemberAccount SET UserName = UserName + 'A' WHERE CURRENT OF My_Cursor; --更新
 --DELETE FROM dbo.MemberAccount WHERE CURRENT OF My_Cursor; --删除
 FETCH NEXT FROM My_Cursor; --读取下一行数据
 END
CLOSE My_Cursor; --关闭游标
DEALLOCATE My_Cursor; --释放游标
GO

-------------------------------------------------------------------------------------------------------

declare cur_BBB BBB%rowtype;
cursor BBB_TEM_cur is select * from BBB_TEM;
begin
 open BBB_TEM_cur;
 loop--注意此处循环方式
      fetch BBB_TEM_cur into cur_BBB;
       exit when BBB_TEM_cur%notfound;
        update BBB
        set BBB.BID=cur_BBB.BID
        where BBB.BNAME=cur_BBB.BNAME;
 end loop;
commit;
end;

-------------------------------------------------------------------------------------------------

游标比较特殊,可以在EXEC()中创建后再引用,通常用于动态游标.可以这样处理:(实测 错误)

declare @sql varchar(8000),@table sysname
set @table = 'table1'
set @sql='DECLARE abc CURSOR global FOR select * from ' + @table --global 全局游标才能使用
exec(@sql)
OPEN abc
--直接加入就可以,不用sql拼接??有时可用
declare my_cur1 cursor for select id,PropertyId,Value,preValue from RealtimeData where DTime=CONVERT(varchar(20),@GDTime,120)

在存储过程中怎么将查询出的多条记录赋值给变量

create proc upt_sp
as
begin
declare @name,...
declare mycur cursor for select name,... from table where ....
open mycur
fetch next from mycur into @name,...
begin
update table2 set name=@name,... where .....
fetch next from mycur into @name,...
end
close mycur
deallocate mycur
end

大量数据处理基础操作思路

1、批量插入

insert into T1(n1,n2,n3)

select m1,m2,m3 from T2

--批量更新

update T1 set T1.a=T2.a

where T1.b=T2.b(这里如果关联表较多,可以先查询出结果,用结果表关联查处需要的参数

2、拼接字段,来用update或insert一次执行,注意varchar最长为8000

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值