Ⅰ 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