當前位置:首頁 » 存儲配置 » sql存儲過程循環

sql存儲過程循環

發布時間: 2023-01-15 10:02:15

1. sqlserver存儲過程如何寫循環

declare @i int

set @i = 0

while @i < 100

begin

print @i

set @i = @i + 1

end

-- 定義循環變數

declare @loopIndex int set @loopIndex = 0

--定義循環次數

declare @count int set @count=1

-- 取得循環次數

select @count=count(1) from sys_user

-- 開始循環

while @loopIndex <= @count

begin

  -- 定義接收參數

  declare @USER_NAME nvarchar(50)

-- 取得循環的數據

SELECT @USER_NAME = hh.USER_NAME

FROM (SELECT ROW_NUMBER() OVER (ORDER BY USER_NAME) 'rowindex',USER_NAME FROM sys_user)hh 

WHERE hh.rowindex = @loopIndex

-- 進行相關業務邏輯 例如輸出結果 

print @USER_NAME

-- 循環自動加一

set @loopIndex = @loopIndex + 1

end

begin

  -- 定義錯誤返回信息

  declare @error int 

-- 定義接收參數

  declare @User_Name varchar(50)

  declare @Address varchar(50)

  set @error=0

  --定義游標

  declare demo_cursor cursor

  for (select User_Name,Address from sys_user)

  --打開游標--

  open demo_cursor

  --開始循環游標變數--

  fetch next from demo_cursor into @User_Name,@Address

  while @@FETCH_STATUS = 0  --返回被 FETCH語句執行的最後游標的狀態--

    begin       

      print @User_Name+'____'+@Address

      set @error= @error + @@ERROR  --記錄每次運行sql後是否正確,0正確

      fetch next from demo_cursor into @User_Name,@Address  --轉到下一個游標,沒有會死循環

    end  

  close demo_cursor --關閉游標

  deallocate demo_cursor  --釋放游標

end

更多內容請訪問: https://mxdqh.top/

2. sqlserver 存儲過程中循環遍歷結果集

sql1=select * from (select *, row_number() over(order by username ) as rowNumber from users where regfrom='&admin&') as t where t.rowNumber > 0 and t.rowNumber <= 0 + 30 order by username
怎麼會有27 條記錄呢,除非你的表 一共就27條記錄吧。

用游標或臨時表
--游標

declare youbiao1 for 查詢1
open youbiao1
fetch next from youbiao1 into 變數
while @@FETCH_STATUS = 0
begin
裡面一次套用
end

--臨時表
declare @ID int
set @ID = 1
while Exists(select * from 表)
begin
--處理
--
set @ID = @ID + 1
end

3. sql 存儲過程 游標循環

SET @SQL='

DECLARE @INSTALL 類型

DECLARE EMPLOYEE_CLASS CURSOR FOR
SELECT INSTALL '+@TABLENAME

SET @SQL=@SQL+'
OPEN EMPLOYEE_CLASS
FETCH NEXT FROM EMPLOYEE_CLASS INTO @INSTALL
WHILE @@FETCH_STATUS = 0
BEGIN

FETCH NEXT FROM EMPLOYEE_CLASS INTO @INSTALL
END
CLOSE EMPLOYEE_CLASS
DEALLOCATE EMPLOYEE_CLASS

RETURN
'

EXEC (@SQL)

4. MySQL 存儲過程 怎麼實現 循環sql語句

delimiter $$
mysql>
mysql> CREATE PROCEDURE myProc() //創建while循環的存儲過程 if分支語句示例
-> BEGIN
->
-> DECLARE i int;
-> SET i=1;
-> loop1: WHILE i<=10 DO
-> IF MOD(i,2)<>0 THEN /*Even number - try again*/
-> SELECT CONCAT(i," is an odd number");
-> END IF;
-> SET i=i+1;
-> END WHILE loop1;
-> END$$
Query OK, 0 rows affected (0.00 sec)

這種也可以

5. mssql 存儲過程中循環如何寫,在循環中用什麼語句跳出循環呢,在線等

給你個例子:

for loop是這樣的:
createprocere pro
begin
declare aintdefault1;
label1: loop
if a<6then
selecta;
seta=a+1;
iterate label1;
endif;
leave label1;跳出循環
endloop label1;
end

while是這樣的:
createprocere pro
begin
declare aintdefault4;
while a<10 do
selecta;
seta=a+1;
endwhile;
end

6. 如何在SQL SERVER 2005存儲過程中,使用循環語句

實現循環有很多種方式 看你需要 或者喜歡
有for 循環
有while 循環
有foreach 循環
等等 我用的不是 sql sever資料庫 具體的 你自己寫寫看
------------------------------------------------------------
SQL
SERVER資料庫建立存儲過程時,可以使用循環語句,下面就將為您介紹這種SQL SERVER資料庫中存儲過程使用循環語句的方法,供您參考。

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為該存儲過程的參數,如果有多個參數,使用「,」分開就可以了,這也是存儲過程調用另一個存儲過程的一種方法。

這個是我從網上網路的 希望對你有用

7. SQLserver中存儲過程中如何循環取值

sqlserver 中循環取值有兩種方法:
1.使用游標
2.mssql sqlserver 遍歷循環的新方法-使用while語句+臨時表的方法。

8. sql 存儲過程裡面如何 對數據集循環

A. 在簡單的游標中使用 FETCH

以下示例為 Person.Contact 表中姓氏以字母 B 開頭的行聲明了一個簡單的游標,並使用 FETCH NEXT 逐個提取這些行。FETCH 語句以單行結果集形式返回在 DECLARE CURSOR 中指定的列的值。

USEAdventureWorks
GO
DECLAREcontact_cursorCURSORFOR
SELECTLastNameFROMPerson.Contact
WHERELastNameLIKE'B%'
ORDERBYLastName

OPENcontact_cursor

--Performthefirstfetch.
FETCHNEXTFROMcontact_cursor

--Check@@FETCH_.
WHILE@@FETCH_STATUS=0
BEGIN
--.
FETCHNEXTFROMcontact_cursor
END

CLOSEcontact_cursor
DEALLOCATEcontact_cursor
GO

B. 使用 FETCH 將值存入變數

以下示例與示例 A 相似,但 FETCH 語句的輸出存儲於局部變數而不是直接返回到客戶端。PRINT 語句將變數組合成單一字元串並將其返回到客戶端。

USEAdventureWorks
GO
--.
DECLARE@LastNamevarchar(50),@FirstNamevarchar(50)

DECLAREcontact_cursorCURSORFOR
SELECTLastName,FirstNameFROMPerson.Contact
WHERELastNameLIKE'B%'
ORDERBYLastName,FirstName

OPENcontact_cursor

--.
--Note:
--intheSELECTstatement.

FETCHNEXTFROMcontact_cursor
INTO@LastName,@FirstName

--Check@@FETCH_.
WHILE@@FETCH_STATUS=0
BEGIN

--.
PRINT'ContactName:'+@FirstName+''+@LastName

--.
FETCHNEXTFROMcontact_cursor
INTO@LastName,@FirstName
END

CLOSEcontact_cursor
DEALLOCATEcontact_cursor
GO

9. SQL怎麼在存儲過程或觸發器中使用循環語句

這個觸發器是更新的時候操作;
表記錄的update實際上執行的是先delete後insert;
所以,如果要將觸發器裡面的sql代碼提取出來可以單獨執行的話,需要知道參數,可以把參數寫成存儲過程的參數,同時還需要留意觸發器中的特定執行條件,比如說當update某個欄位時才執行觸發器,這個條件也要考慮到存儲過程的sql邏輯中。
以上幾點建議僅供參考。

10. sql 循環調用存儲過程

你的語句里,@randCardID都是默認值,所以是重復的。
create table #temp(str char(19))
declare @randCardID char(19)
exec proc_randCardID @randCardID output
declare @num int
set @num = 0
while(@num <10)
begin
insert #temp select @randCardID
exec proc_randCardID @randCardID output
---這一句要改
set @num = @num +1
end
select * from #temp
drop table #temp

熱點內容
多大孩子適合學編程 發布:2025-07-22 12:24:05 瀏覽:88
代理伺服器佔ip 發布:2025-07-22 12:24:01 瀏覽:579
java全局變數 發布:2025-07-22 12:19:14 瀏覽:151
osgi源碼 發布:2025-07-22 12:12:38 瀏覽:29
yarphp 發布:2025-07-22 12:04:32 瀏覽:262
暗區突圍輔助腳本 發布:2025-07-22 12:04:29 瀏覽:757
js操作資料庫 發布:2025-07-22 11:58:07 瀏覽:525
辦公及生活配置有哪些 發布:2025-07-22 11:55:05 瀏覽:687
模擬器玩金鏟鏟為什麼伺服器滿 發布:2025-07-22 11:53:18 瀏覽:766
編程英語詞彙大全 發布:2025-07-22 11:50:36 瀏覽:572