當前位置:首頁 » 編程語言 » sql存儲過程循環表
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql存儲過程循環表

發布時間: 2022-09-23 11:29:26

sql語句編寫存儲過程,使用游標循環列印學生表中的數據,求大神

寫一個例子給樓主看下就知道了:

在sqlserver2000中新建一個存儲過程:
CREATEPROCEDUREPK_Test
AS
//聲明1個變數
declare@namenvarchar(20)

//聲明一個游標mycursor,select語句中參數的個數必須要和從游標取出的變數名相同


//打開游標
openmycursor

//從游標里取出數據賦值到我們剛才聲明的2個變數中

fetchnextfrommycursorinto@name

//判斷游標的狀態
//0fetch語句成功
//-1fetch語句失敗或此行不在結果集中
//-2被提取的行不存在
while(@@fetch_status=0)
begin

//顯示出我們每次用游標取出的值
print'游標成功取出一條數據'
print@name

//用游標去取下一條記錄
fetchnextfrommycursorinto@name

end

//關閉游標
closemycursor

//撤銷游標
deallocatemycursor

GO

Ⅱ SQL 用存儲過程統計表裡的數據,想用臨時表循環,請教大俠們

樓主,不至於這么復雜的。一個簡單的統計,還需要臨時表做什麼呢?基本上就是一個簡單匯總查詢而已,如果程序要求,你可以封裝成存儲過程,但是我個人覺得不需要的,SQL如下:
select 款號,顏色,尺碼,工號,時間,sum(件數) as 總計件數,count(*) as 總行數 from table
group by 款號,顏色,尺碼,工號,時間

Ⅲ 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

Ⅳ Sql存儲過程游標循環的用法及sql如何使用cu

--1.聲明名稱為
cursor_fruit的游標USE sample_db;GODECLARE cursor_fruit CURSOR FORSELECT f_name,f_price FROM fruits;
--2.打開游標
OPEN cursor_fruit;
--3.讀取游標中的數據
--【例】使用名稱為cursor_fruit的游標,檢索fruits表中的記錄,輸入如下:USE sample_db;
GOFETCH NEXT FROM cursor_fruit
WHILE @@FETCH_STATUS=0
BEGIN
FETCH NEXT FROM cursor_fruit
END;
--4.關閉關閉名稱為cursor_fruit的游標
CLOSE cursor_fruit
--5.釋放游標
DEALLOCATE cursor_fruit;

Ⅳ sqlserver存儲過程何循環讀表。

使用游標,如下
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

Ⅵ Sql存儲過程中怎麼寫循環某個表的行

使用游標,具體看你使用那個資料庫了。
每個資料庫使用游標的方法有些差別的。

Ⅶ SQL 怎麼使用存儲過程循環刪除多張表記錄

用while 循環
create procere 存儲過程名
@ 傳的表名的字元串 varchar(max)
as
declare @inx int
declare @tablename varchar(max)
as
while(CHARINDEX('&',@傳的表名的字元串)>0)
begin
set @idx =CHARINDEX('&',@傳的表名的字元串)>
set @tablename = SUBSTRING(@傳的表名的字元串,0,@idx)
delete @tablename where 條件
set @傳的表名的字元串 = SUBSTRING((@傳的表名的字元串,@idx+1, len(@傳的表名的字元串)-@idx)

不過傳的字元串是table1&table2$table3& 這個樣子的

Ⅷ 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

Ⅸ SQL 2005 存儲過程,循環執行的方法

使用游標,cursor .. FETCH NEXT

或者,如果閑游標麻煩,也可以試試while循環

@xCount = select count(*) from tb where

declare @x int
set @x = 1
while(@i <= @xCount)
begin
# do sth
set @x = @x + 1
end