十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
游標(biāo)是sql中效率最低的,盡量不要使用游標(biāo),如果你的參數(shù)名可以自己定義的話就好辦了,比如,@test1,@test2......@test10,定義成有規(guī)律的,那么可以通過拼參數(shù)名的方式

創(chuàng)新互聯(lián)專業(yè)IDC數(shù)據(jù)服務(wù)器托管提供商,專業(yè)提供成都服務(wù)器托管,服務(wù)器租用,成都移動服務(wù)器托管,成都移動服務(wù)器托管,成都多線服務(wù)器托管等服務(wù)器托管服務(wù)。
set @sql='update dbo.KY_ProjectResult set state=1 where Project_Result_ID='+‘@test’+cast((11-@count) as char(10))
動態(tài)的把你的sql拼出來,然后用exec()調(diào)用。
例如:
declare @str varchar(1000);
select @str='create table ttt(id1 int,id2 int,id3 int.....);'
exec(@str);
************
補(bǔ)充:
************
1、建一個表,保存你要追加的字段名和字段類型
如:create table t_tmp(id int IDENTITY(1,1) not null,col_name varchar(100),col_type varchar(100));
2、把你想要動態(tài)追加的字段和類型全寫入表中
如:
insert into t_tmp(col_name,col_type) values('t1','int');
insert into t_tmp(col_name,col_type) values('t2','date');
insert into t_tmp(col_name,col_type) values('t3','varchar(100)');
insert into t_tmp(col_name,col_type) values('t4','char(100)');
3、生成動態(tài)建表語句,并創(chuàng)建表
declare @str varchar(2000)
set @str='create table ttt('
select @str=@str + col_name+' '+col_type+',' from t_tmp
set @str=substring(@str,1,len(@str)-1)+')'
select @str
exec(@str)
---
以上,希望對你有所幫助。
正常循環(huán)有兩類循環(huán),普通循環(huán)和游標(biāo)循環(huán)
普通循環(huán):while,for ,WHILE LOOP
游標(biāo)循環(huán):針對你select出來的值進(jìn)行循環(huán)
除了上述那些還有復(fù)活形的多游標(biāo),嵌套循環(huán)等。
使用游標(biāo),如下
CREATE PROCEDURE proc_getalltable
AS
BEGIN
SET NOCOUNT ON;
DECLARE @tablename VARCHAR(100),@sql VARCHAR(1000)
DECLARE tablename CURSOR FOR SELECT tname FROM tablelist
OPEN tablename
FETCH NEXT FROM tablename INTO @tablename
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @sql = 'SELECT * FROM ' + @tablename
EXEC(@sql)
FETCH NEXT FROM tablename INTO @tablename
END
CLOSE tablename
DEALLOCATE tablename
END
GO