初学PL/SQL 游标
1,显示游标的操作
(1) 定义游标
根据查询的数据情况,在PL/SQL块的声明部分定义游标,语法为:
cursor cursor_name is select_statement;
注意:
游标必须在PL/SQL块的声明部分进行定义;
游标定义时可以引用PL/SQL变量,但变量必须在游标定义之前定义;
定义游标时并没有生成数据,只是将定义信息保存到数据字典中;
游标定义后,可以使用cursor_name%rowtype 定义变量;
(2) 打开游标
为了在内存中分配缓冲区,并从数据库中检索数据,需要在PL/SQL块的执行部分打开游标,语法为:
open cursor_name;
注意:
只有在打开游标时,才是真正的创建缓冲区,并从数据库检索数据;
游标一旦打开,就无法再次打开,除非先关闭;
如果游标定义中的变量值发生变化,则只能在下次打开游标时才起作用;
(3)检索游标
语法为:
Fetch cursor_name into variable_list|record_variable;
注意:
在使用fetch语句之前必须先打开游标,保证缓冲区有数据;
对游标第一次使用fetch语句时,游标指针指向第一条记录,因此操作的对象是第一条记录。操作完后,游标指针指向下一条记录;
游标指针只能向下移动,不能回退。
into子句中变量个数,顺序,数据类型必须和缓冲区中的对应。
由于游标对应的缓冲区中可能有多个记录,因此检索游标的过程是一个循环过程。
(4) 关闭游标
游标对应缓冲区的数据处理完后,应该及时关闭游标,以释放它占用的系统资源。关闭游标的语法为:
close cursor_name;
例如:根据书名查询对应书的信息,由于查询的结果可能有多个,因此采用游标;
declare
v_bookname book.bookname%type;
cursor c_book is select * from book where bookName=v_bookname;
v_book c_book%rowtype;
begin
v_bookname:=&x;
op
相关文档:
对于SQL 随机抽样我们常想到的就是newid(),但如果对于一个在百万、千万甚至更大海量数据表中抽样的话,简单的newid(),其性能,效率就不是很理想了。所以在这里有必要讨论一下,择优而用。
long_goods是一个百万数据的表,Ctrl+L执行以下语句:
--id_index是我为主键加的一个非聚焦索引
SELECT top 1&nb ......
说明:以下五十个语句都按照测试数据进行过测试,最好每次只单独运行一个语句。
问题及描述:
--1.学生表
Student(S#,Sname,Sage,Ssex) --S# 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别
--2.课程表
Course(C#,Cname,T#) --C# --课程编号,Cname 课程名称,T# 教师编号
--3.教师表
Teacher(T#,Tname) -- ......
视图操作
视图是从一个或者多个表或视图中导出的表,其结构和数据是建立在对表的查询基础上的。与真实的表一样,视图也包括几个被定义的数据列和多个数据行,但这些数据实际上是被其引用的其他表中的数据。因此,视图不是真实存在的基础表,而是一个虚拟的表,视图所对应的数据并不实际地以视图结构存储在数据库中,而是存 ......
sql CHARINDEX函数
SQL Server 2010-01-15 09:01:15 阅读888 评论0 字号:大中小
CHARINDEX函数返回字符或者字符串在另一个字符串中的起始位置。CHARINDEX函数调用方法如下:
CHARINDEX ( expression1 , expression2 [ , start_location ] )
  ......