A. PL、sql的游标怎么用
一> 游标是什么:x0dx0a游标字面理解就是游动的光标。x0dx0a用数据库语言来描述:游标是映射在结果集中一行数据上的位置实体,有了游标x0dx0a用户就可以访问结果集中的任意一行数据了,将游标放置到某行后,即可对该行数据进行操作,例如提取当前x0dx0a行的数据等等。x0dx0a二> 游标的分类:x0dx0a显式游标和隐式游标x0dx0ax0dx0a显示游标的使用需要4步:x0dx0a1.声明游标x0dx0ax0dx0aCURSOR mycur(vartype number) isx0dx0aselect emp_no,emp_zc from cus_emp_basic x0dx0awhere com_no = vartype;x0dx0ax0dx0a2.打开游标x0dx0aopen mycur(000627) 注:000627:参数x0dx0ax0dx0a3.读取数据x0dx0afetch mycur into varno,varprice;x0dx0ax0dx0a4.关闭游标x0dx0aclose mycur;x0dx0a三> 游标的属性x0dx0aoracle 游标有4个属性: %ISOPEN , %FOUND , %NOTFOUND, %ROWCOUNTx0dx0ax0dx0a%ISOPEN 判断游标是否被打开,如果打开%ISOPEN 等于true,否则等于falsex0dx0a%FOUND %NOTFOUND 判断游标所在的行是否有效,如果有效,则%FOUNDD等于true,否则等于falsex0dx0a%ROWCOUNT 返回当前位置为止游标读取的记录行数。x0dx0ax0dx0a四> 示例:x0dx0ax0dx0aset serveroutput on;x0dx0adeclarex0dx0avarno varchar2(20);x0dx0avarprice varchar2(20);x0dx0ax0dx0aCURSOR mycur(vartype number) isx0dx0aselect emp_no,emp_zc from cus_emp_basic x0dx0awhere com_no = vartype;x0dx0abeginx0dx0ax0dx0aif mycur%isopen = false thenx0dx0ax0dx0aopen mycur(000627);x0dx0aend if;x0dx0afetch mycur into varno,varprice;x0dx0awhile mycur%found x0dx0aloopx0dx0adbms_output.put_line(varno||','||varprice);x0dx0aif mycur%rowcount=2 thenx0dx0aexit;x0dx0aend if;x0dx0afetch mycur into varno,varprice;x0dx0ax0dx0aend loop;x0dx0aclose mycur;x0dx0ax0dx0aend;x0dx0ax0dx0apl/sql 记录 的结构和c语言中的结构体类似,是由一组数据项构成的逻辑单元。x0dx0apl/sql 记录并不保存再数据库中,它与变量一样,保存再内存空间中,在使用记录时候,要首先定义记录结构x0dx0a,然后声明记录变量。可以把pl/sql记录看作是一个用户自定义的数据类型。x0dx0ax0dx0aset serveroutput on;x0dx0adeclarex0dx0ax0dx0atype person is recordx0dx0a(x0dx0aempno cus_emp_basic.emp_no%type,x0dx0aempzc cus_emp_basic.emp_zc%type);x0dx0ax0dx0aperson1 person;x0dx0ax0dx0acursor mycur(vartype number)isx0dx0aselect emp_no,emp_zc from cus_emp_basic x0dx0awhere com_no=vartype;x0dx0ax0dx0abeginx0dx0aif mycur%isopen = false thenx0dx0aopen mycur(000627);x0dx0aend if;x0dx0ax0dx0aloopx0dx0afetch mycur into person1;x0dx0aexit when mycur%notfound;x0dx0adbms_output.put_line('雇员编号:'||person1.empno||',地址:'||person1.empzc);x0dx0aend loop;x0dx0aclose mycur;x0dx0aend;x0dx0ax0dx0a典型游标for 循环x0dx0ax0dx0a游标for循环示显示游标的一种快捷使用方式,它使用for循环依次读取结果集中的行x0dx0a数据,当form循环开始时,游标自动打开(不需要open),每循环一次系统自动读取x0dx0a游标当前行的数据(不需要fetch),当退出for循环时,游标被自动关闭(不需要使用close)x0dx0ax0dx0a使用游标for循环的时候不能使用open语句,fetch语句和close语句,否则会产生错误。x0dx0ax0dx0aset serveroutput on; mycur(vartype number)isx0dx0aselect emp_no,emp_zc from cus_emp_basic x0dx0awhere com_no=vartype; person in mycur(000627) loopx0dx0ax0dx0adbms_output.put_line('雇员编号:'||person.emp_no||',地址:'||person.emp_zc);x0dx0aend loop;x0dx0ax0dx0aend;
B. SQL游标的问题问题,怎么解决
--一般游标分定义,打开,读取,关闭和释放几个步骤--1.定义变量,用来保存游标读取的数据DECLARE
@ID
INT
--2.定义游标DECLARE
Cur
CURSOR
FOR
Select
id
From
表--3.打开游标OPEN
Cur--4.循环读取FETCH
NEXT
FROM
Cur
INTO
@ID
WHILE
@@FETCH_STATUS
=
0BEGIN--要做的事FETCH
NEXT
FROM
Cur
INTO
@IDEND
--5.关闭游标CLOSE
Cur--6.释放游标DEALLOCATE
Cur
C. 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
D. plsql中怎样获取未知结构的动态游标(ref
如果给的是一个查询SQL文本,那么事情很容易(对于9i及以上版本),只要使用dbms_sql.open_cursor打开游标,再使用dbms_sql.describe_columns即可得到游标的所有字段名称及类型等数据,存储在一个集合类型变量中(具体请看dbms_sql.desc_tab)。请参考如下PLSQL代码:
DECLARE
l_curidINTEGER; l_cntNUMBER;
l_desctabdbms_sql.desc_tab; l_sqltextVARCHAR2(2000); BEGIN
l_sqltext := 'select owner,object_type,object_name from dba_objects
where rownum<= 10';--可以是任意有效的查询sql文本 l_curid := dbms_sql.open_cursor();
dbms_sql.parse(l_curid, l_sqltext, dbms_sql.native); dbms_sql.describe_columns(l_curid, l_cnt, l_descTab);
FOR i IN1 ..l_desctab.count LOOP
dbms_output.put(lpad(l_desctab(i).col_name, 20)); ENDLOOP;
dbms_output.new_line;
dbms_sql.close_cursor(l_curId); END;
运行结果如下:
OWNER OBJECT_TYPE OBJECT_NAME
注意,必须使用 DBMS_SQL.OPEN_CURSOR 打开游标,否则,就不是这种处理方法了。
E. sql 中游标的作用及使用方法
游标可以从数据库中查询出一个结果集,在你关闭它之前,你可以反复使用这个结果集,读取这个结果集中的任意行任意字段的内容,一般在存储过程或前台程序中常见。
F. Sql中的游标是干嘛的
游标(cursor)是结果集的逻辑扩展,可以看做指向结果集的一个指针,通过使用游标,应用程序可以逐行访问并处理结果集。
ResultSet对象用于接收查询结果,next()方法用于判断结果集是否为空,相当于指针,指向结果集下一个数据。
(6)sql读取游标扩展阅读:
游标的生命周期包含有五个阶段:声明游标、打开游标、读取游标数据、关闭游标、释放游标。
1、声明游标语法
DECLARE cursor_name CURSOR [ LOCAL | GLOBAL ]
[ FORWARD_ONLY | SCROLL ]
[ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ]
[ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ]
[ TYPE_WARNING ]
FOR select_statement
[ FOR UPDATE [ OF column_name [ ,...n ] ] ]
2、打开游标语法
open [ Global ] cursor_name | cursor_variable_name
3、读取游标数据语法
Fetch[ [Next|prior|Frist|Last|Absoute n|Relative n ]from ][Global] cursor_name[into @variable_name[,....]]
4、关闭游标语法
close [ Global ] cursor_name | cursor_variable_name
5、释放游标语法
deallocate cursor_name
G. PL、SQL的游标怎么用
一> 游标是什么:
游标字面理解就是游动的光标。
用数据库语言来描述:游标是映射在结果集中一行数据上的位置实体,有了游标
用户就可以访问结果集中的任意一行数据了,将游标放置到某行后,即可对该行数据进行操作,例如提取当前
行的数据等等。
二> 游标的分类:
显式游标和隐式游标
显示游标的使用需要4步:
1.声明游标
CURSOR mycur(vartype number) is
select emp_no,emp_zc from cus_emp_basic
where com_no = vartype;
2.打开游标
open mycur(000627) 注:000627:参数
3.读取数据
fetch mycur into varno,varprice;
4.关闭游标
close mycur;
三> 游标的属性
oracle 游标有4个属性: %ISOPEN , %FOUND , %NOTFOUND, %ROWCOUNT
%ISOPEN 判断游标是否被打开,如果打开%ISOPEN 等于true,否则等于false
%FOUND %NOTFOUND 判断游标所在的行是否有效,如果有效,则%FOUNDD等于true,否则等于false
%ROWCOUNT 返回当前位置为止游标读取的记录行数。
四> 示例:
set serveroutput on;
declare
varno varchar2(20);
varprice varchar2(20);
CURSOR mycur(vartype number) is
select emp_no,emp_zc from cus_emp_basic
where com_no = vartype;
begin
if mycur%isopen = false then
open mycur(000627);
end if;
fetch mycur into varno,varprice;
while mycur%found
loop
dbms_output.put_line(varno||','||varprice);
if mycur%rowcount=2 then
exit;
end if;
fetch mycur into varno,varprice;
end loop;
close mycur;
end;
pl/sql 记录 的结构和c语言中的结构体类似,是由一组数据项构成的逻辑单元。
pl/sql 记录并不保存再数据库中,它与变量一样,保存再内存空间中,在使用记录时候,要首先定义记录结构
,然后声明记录变量。可以把pl/sql记录看作是一个用户自定义的数据类型。
set serveroutput on;
declare
type person is record
(
empno cus_emp_basic.emp_no%type,
empzc cus_emp_basic.emp_zc%type);
person1 person;
cursor mycur(vartype number)is
select emp_no,emp_zc from cus_emp_basic
where com_no=vartype;
begin
if mycur%isopen = false then
open mycur(000627);
end if;
loop
fetch mycur into person1;
exit when mycur%notfound;
dbms_output.put_line('雇员编号:'||person1.empno||',地址:'||person1.empzc);
end loop;
close mycur;
end;
典型游标for 循环
游标for循环示显示游标的一种快捷使用方式,它使用for循环依次读取结果集中的行
数据,当form循环开始时,游标自动打开(不需要open),每循环一次系统自动读取
游标当前行的数据(不需要fetch),当退出for循环时,游标被自动关闭(不需要使用close)
使用游标for循环的时候不能使用open语句,fetch语句和close语句,否则会产生错误。
set serveroutput on;
declare
cursor mycur(vartype number)is
select emp_no,emp_zc from cus_emp_basic
where com_no=vartype;
begin
for person in mycur(000627) loop
dbms_output.put_line('雇员编号:'||person.emp_no||',地址:'||person.emp_zc);
end loop;
end;
H. SQL游标怎么用
具体用法如下:
1、打开sqlservermanagementstudio,选中要操作的数据库;
2、新建一个查询;
3、声明一个游标,以及一些需要用到的临时变量;
4、使用游标,首先打开游标,并将游标下移一行;
5、循环取出数据,并进行相应的逻辑处理,其中的变量保存在@id和@name中;
6、每次循环的结束,要把游标下移;
7、要关闭游标,并释放内存。
注意事项:游标名称不能以@开头。
I. Sql中的游标是干嘛的
游标(cursor)是结果集的逻辑扩展,可以看做指向结果集的一个指针,通过使用游标,应用程序可以逐行访问并处理结果集。
ResultSet对象用于接收查询结果,next()方法用于判断结果集是否为空,相当于指针,指向结果集下一个数据。
(9)sql读取游标扩展阅读:
游标的生命周期包含有五个阶段:声明游标、打开游标、读取游标数据、关闭游标、释放游标。
1、声明游标语法
DECLARE cursor_name CURSOR [ LOCAL | GLOBAL ]
[ FORWARD_ONLY | SCROLL ]
[ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ]
[ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ]
[ TYPE_WARNING ]
FOR select_statement
[ FOR UPDATE [ OF column_name [ ,...n ] ] ]
2、打开游标语法
open [ Global ] cursor_name | cursor_variable_name
3、读取游标数据语法
Fetch[ [Next|prior|Frist|Last|Absoute n|Relative n ]from ][Global] cursor_name[into @variable_name[,....]]
4、关闭游标语法
close [ Global ] cursor_name | cursor_variable_name
5、释放游标语法
deallocate cursor_name