SQL文游標
Ⅰ sql游標的寫法
update A set price=price+1 where id in (select id from B left outer join C on B.zsn=C.szn where C.prodate >='2012-1-1' and C.prodate<'2012-1-2')
一條語句就可以了,用什麼存儲過程
Ⅱ SQL中游標的用法
在倒數第3行上面加上:fetch next from pcurr into @ID,@Sex
即:
......
set @Sexs = '男'
begin
update Person set Sex = @Sexs where ID = @ID
end
fetch next from pcurr into @ID,@Sex
end
close pcurr
deallocate pcurr
Ⅲ sql 游標
又是相同的問題,暈倒呀,你怎麼不網路一下,就直接發問了?
--創建存儲過程
create procere nstable
as
begin
--ID
declare @公司ID int
--公司名稱
declare @公司名稱 nvarchar(200)
--定義游標
declare abc cursor for
select min(公司ID) as 公司ID,公司名稱 from 表 group by 公司名稱
--打開游標,並取值
open fetch abc
fetch next from abc into @公司ID,@公司名稱
--進入循環
while @@fetch_status=0
begin
update 表 set 公司ID=@公司名稱ID where 公司名稱=@公司名稱
--取下一條
fetch next from abc into @公司ID,@公司名稱
end
--關閉游標
close abc
deallocate abc
eng
go
運行時,只要用:execute nstable
就會達到你要的效果
Ⅳ SQL游標如何使用
A. 在簡單的游標中使用 FETCH
下例為 authors 表中姓以字母 B 開頭的行聲明了一個簡單的游標,並使用 FETCH NEXT 逐個提取這些行。FETCH 語句以單行結果集形式返回由 DECLARE CURSOR 指定的列的值。
USE pubs
GO
DECLARE authors_cursor CURSOR FOR
SELECT au_lname FROM authors
WHERE au_lname LIKE "B%"
ORDER BY au_lname
OPEN authors_cursor
-- Perform the first fetch.
FETCH NEXT FROM authors_cursor
-- Check @@FETCH_STATUS to see if there are any more rows to fetch.
WHILE @@FETCH_STATUS = 0
BEGIN
-- This is executed as long as the previous fetch succeeds.
FETCH NEXT FROM authors_cursor
END
CLOSE authors_cursor
DEALLOCATE authors_cursor
GO
au_lname
----------------------------------------
Bennet
au_lname
----------------------------------------
Blotchet-Halls
au_lname
----------------------------------------
B. 使用 FETCH 將值存入變數
下例與上例相似,但 FETCH 語句的輸出存儲於局部變數而不是直接返回給客戶端。PRINT 語句將變數組合成單一字元串並將其返回到客戶端。
USE pubs
GO
-- Declare the variables to store the values returned by FETCH.
DECLARE @au_lname varchar(40), @au_fname varchar(20)
DECLARE authors_cursor CURSOR FOR
SELECT au_lname, au_fname FROM authors
WHERE au_lname LIKE "B%"
ORDER BY au_lname, au_fname
OPEN authors_cursor
-- Perform the first fetch and store the values in variables.
-- Note: The variables are in the same order as the columns
-- in the SELECT statement.
FETCH NEXT FROM authors_cursor
INTO @au_lname, @au_fname
-- Check @@FETCH_STATUS to see if there are any more rows to fetch.
WHILE @@FETCH_STATUS = 0
BEGIN
-- Concatenate and display the current values in the variables.
PRINT "Author: " + @au_fname + " " + @au_lname
-- This is executed as long as the previous fetch succeeds.
FETCH NEXT FROM authors_cursor
INTO @au_lname, @au_fname
END
CLOSE authors_cursor
DEALLOCATE authors_cursor
GO
Author: Abraham Bennet
Author: Reginald Blotchet-Halls
C. 聲明 SCROLL 游標並使用其它 FETCH 選項
下例創建一個 SCROLL 游標,使其通過 LAST、PRIOR、RELATIVE 和 ABSOLUTE 選項支持所有滾動能力。
USE pubs
GO
-- Execute the SELECT statement alone to show the
-- full result set that is used by the cursor.
SELECT au_lname, au_fname FROM authors
ORDER BY au_lname, au_fname
-- Declare the cursor.
DECLARE authors_cursor SCROLL CURSOR FOR
SELECT au_lname, au_fname FROM authors
ORDER BY au_lname, au_fname
OPEN authors_cursor
-- Fetch the last row in the cursor.
FETCH LAST FROM authors_cursor
-- Fetch the row immediately prior to the current row in the cursor.
FETCH PRIOR FROM authors_cursor
-- Fetch the second row in the cursor.
FETCH ABSOLUTE 2 FROM authors_cursor
-- Fetch the row that is three rows after the current row.
FETCH RELATIVE 3 FROM authors_cursor
-- Fetch the row that is two rows prior to the current row.
FETCH RELATIVE -2 FROM authors_cursor
CLOSE authors_cursor
DEALLOCATE authors_cursor
GO
au_lname au_fname
---------------------------------------- --------------------
Bennet Abraham
Blotchet-Halls Reginald
Carson Cheryl
DeFrance Michel
del Castillo Innes
Dull Ann
Green Marjorie
Greene Morningstar
Gringlesby Burt
Hunter Sheryl
Karsen Livia
Locksley Charlene
MacFeather Stearns
McBadden Heather
O'Leary Michael
Panteley Sylvia
Ringer Albert
Ringer Anne
Smith Meander
Straight Dean
Stringer Dirk
White Johnson
Yokomoto Akiko
au_lname au_fname
---------------------------------------- --------------------
Yokomoto Akiko
au_lname au_fname
---------------------------------------- --------------------
White Johnson
au_lname au_fname
---------------------------------------- --------------------
Blotchet-Halls Reginald
au_lname au_fname
---------------------------------------- --------------------
del Castillo Innes
au_lname au_fname
---------------------------------------- --------------------
Carson Cheryl
Ⅳ sql 游標 是什麼意思
declare cr_cursor cursor --1.定義游標
for select name from dbo.sysobjects where xtype='U' and status>0
--?????? 這里是獲取記錄
fetch next From cr_cursor into @Table --??這里是用變數@Table保存獲取到的select 【name】 from dbo.sysobjects where xtype='U' and status>0
name的值
fetch next From cr_cursor into @Table--這句話的完整意思是
將游標移動到下一條記錄並將獲取到是name值賦值給變數@Table
----------------------------------------------------------------------
給你一個例子 和說明 我看來幾遍就學會游標了 下面是例子
---------------------------------------------------------------------
定義游標
Declare MyCursor Cursor For
Select Field1,Field2
From MyTable
Where (Field1 Like '%123%') And (Field2 = 'qqq') And (Field3 Is Not Null) And ......
Group By Field1,Field2
For Read Only
Open MyCursor
移動游標
fetch first from 游標 into 變數列表
取下一條
fetch next from 游標 into 變數列表
取第n條
fetch absolute n from 游標 into 變數列表
例子
日前,因工作需要累加某表裡面的某欄位的全部值,
比如有個表,內容如下
id,text
1,春花秋月何時了
2,往事知多少
3,小樓昨夜又春風
4,古國不堪回首月明中
......
其中id為系列號,text為文本內容,我想使用個sql語句,達到如下效果:
查詢text列,查詢的值累加,即查詢結果顯示如下:
春花秋月何時了 往事知多少 小樓昨夜又春風 古國不堪回首月明中 ...
用存儲過程+游標實現,示例如下
ALTER PROCEDURE [dbo].[abc]
-- Add the parameters for the stored procere here
@p1 int
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
declare @ttt varchar(100);
declare @bbb varchar(10);
set @ttt=''
set @bbb=''
declare mycur cursor for
select meno from test where gid= @p1
open mycur
fetch next from mycur into @bbb
WHILE @@FETCH_STATUS = 0
BEGIN
set @ttt=@ttt+@bbb
fetch next from mycur into @bbb
end
close mycur
select @ttt
Ⅵ sql中的游標是什麼怎樣用呢
例子
table1結構如下
id
int
name
varchar(50)
declare
@id
int
declare
@name
varchar(50)
declare
cursor1
cursor
for
--定義游標cursor1
select
*
from
table1
--使用游標的對象(跟據需要填入select文)
open
cursor1
--打開游標
fetch
next
from
cursor1
into
@id,@name
--將游標向下移1行,獲取的數據放入之前定義的變數@id,@name中
while
@@fetch_status=0
--判斷是否成功獲取數據
begin
update
table1
set
name=name+'1'
where
id=@id
--進行相應處理(跟據需要填入sql文)
fetch
next
from
cursor1
into
@id,@name
--將游標向下移1行
end
close
cursor1
--關閉游標
deallocate
cursor1
Ⅶ SQL游標怎麼用
例子
table1結構如下
id int
name varchar(50)
declare @id int
declare @name varchar(50)
declare cursor1 cursor for --定義游標cursor1
select * from table1 --使用游標的對象(跟據需要填入select文)
open cursor1 --打開游標
fetch next from cursor1 into @id,@name --將游標向下移1行,獲取的數據放入之前定義的變數@id,@name中
while @@fetch_status=0 --判斷是否成功獲取數據
begin
update table1 set name=name+'1'
where id=@id --進行相應處理(跟據需要填入SQL文)
fetch next from cursor1 into @id,@name --將游標向下移1行
end
close cursor1 --關閉游標
deallocate cursor1
Ⅷ SQL 關於游標的
我們遇到的是同樣的問題
Ⅸ sql 中的 游標有什麼作用
因為我們做的數據量大,而且系統上跑的不只我們一個業務。所以,我們都要求盡量避免使用游標,游標使用時會對行加鎖,可能會影響其他業務的正常進行。而且,數據量大時其效率也較低效。另外,內存也是其中一個限制。因為游標其實是相當於把磁碟數據整體放入了內存中,如果游標數據量大則會造成內存不足,內存不足帶來的影響大家都知道了。所以,在數據量小時才使用游標。
Ⅹ SQL游標的使用
1、甲骨文公司的Oracle、甲骨文公司的開源項目MySql、微軟公司的SQL Server、IBM公司的DB2都有游標機制。
2、上下左右遍歷屬性值。彷彿你在使用方向鍵控制單元格。
3、需要遍歷每個屬性值時,游標能任意取出行任意取出列的值。