如何使用for循環更新sql 語句
CREAT PROCEDURE tester
AS
BEGIN
SET NOCOUNT ON;
DECLARE @userId varchar(50)
DECLARE @count int
SET @count = 0
SELECT @count = count(*) FROM UserService_User WHERE Account like '%111%'
WHILE @count > 0
BEGIN
SELECT @userId = Id FROM UserService_User WHERE Account like '%111%'
exec UserService_RemoveUserByUserId @userId
SET @count = @count -1
END
END
說明:
1、此存儲過程在SQL SERVER 2005上測試通過,值得注意的是,循環體中,語句是使用BEGIN……END包括的,而不是網絡上常說的WHILE ……END WHILE結構,其他的循環語句,如LOOP ……UNTIL……END LOOP也不能通過編譯,也許是版本的問題,但在SQL SERVER2005中,循環體使用BEGIN……END就可以,而不能使用網絡上常說的WHILE ……END WHILE結構。
2、循環體中 UserService_RemoveUserByUserId 是一個存儲過程的名稱,@userId為該存儲過程的參數,如果有多個參數,使用“,”分開就可以了,這也是存儲過程調用另一個存儲過程的一種方法。
如何使用for循環更新sql 語句
CREAT PROCEDURE tester ASBEGIN SET NOCOUNT ON; DECLARE @userId varchar(50) DECLARE @count int SET @count = 0 SELECT @count = count(*) FROM UserService_User WHERE Account like '%111%' WHILE @count > 0 BEGIN SELECT @userId = Id FROM UserService_User WHERE Account like '%111%' exec UserService_RemoveUserByUserId @userId SET @count = @count -1 END END說明:1、此存儲過程在SQL SERVER 2005上測試通過,值得注意的是,循環體中,語句是使用BEGIN……END包括的,而不是網絡上常說的WHILE ……END WHILE結構,其他的循環語句,如LOOP ……UNTIL……END LOOP也不能通過編譯,也許是版本的問題,但在SQL SERVER2005中,循環體使用BEGIN……END就可以,而不能使用網絡上常說的WHILE ……END WHILE結構。
2、循環體中 UserService_RemoveUserByUserId 是一個存儲過程的名稱,@userId為該存儲過程的參數,如果有多個參數,使用“,”分開就可以了,這也是存儲過程調用另一個存儲過程的一種方法。
sql語句實現循環有什么特點
select * from ausertable order by userid; commit; //執行 結束 1:最近剛開始用oracle 數據庫,很多東西都不怎么懂,要在賬號表添加 1000個賬號,找了一些資料,經過測試可以使用,開始 我吧語法 都跟SqlServer 里面的混了,花了一個上午的時間,下面就是測試的數據的代碼:特別注意的是:'01'||to_char(i)這里 一直meiyo DECLARE i number:=0; BEGIN for i in 1..100 loop insert into AUSERTABLE(USERID,USERPID,USERNAME) values('01'||to_char(i),'8','武漢'); dbms_*_line(i); end loop; END;。
求sql循環語句
lz是不是不理解數據庫查詢的意義
select本身就是循環的過程
直接
select A1+A2+A3 from A
就行了
--------------------------
你有什么其它操作,很難有用查詢寫不出的事,你提出來看看
===========================
這個需要循環么?
select * into AAA from openrowset
('SQLOLEDB','server=*;uid=sa;pwd=xxx;database=B1'
, 'select * from AAA ')
INSERT INTO BBB select * from AAA
或者直接
INSERT INTO BBB
select * from openrowset
('SQLOLEDB','server=*;uid=sa;pwd=xxx;database=B1'
, 'select * from AAA ')
不就行了
需要循環么?
SQL循環語句
你可以直接在查詢分析器了試一下這個語句,你具體的意思我也不太清楚,循環就要用游標了,其實也可以實現
create table a (id int,cno char(10))
insert a values(1,'999')
insert a values(2,'1000')
create table b (id int)
insert b values(1)
insert b values(3)
insert b values(5)
declare @max int
select @max=max(cast(cno as int)) + 1 from a
declare @sql nvarchar(2000)
set @sql = 'create table #temp (id int, cno int identity('+cast(@max as nvarchar) +',1)) '
set @sql = @sql + 'insert #temp select id from b where id not in(select id from a) '
set @sql = @sql + 'insert a select id,cast(cno as nvarchar) from #temp'
exec sp_executesql @sql
select * from a
drop table a,b
轉載請注明出處華閱文章網 » for循環sql語句