sql中的游标
declare @id varchar(10)
declare @nm varchar(10)
declare @table as table(emp varchar(10),empname varchar(10))
declare CurEmp cursor for select top 6 empid,empname from employee
open CurEmp
fetch next from CurEmp into @id,@nm
While @@fetch_status=0
begin
insert @table(emp,empname) values(@id,@nm)
fetch next from CurEmp into @id,@nm
end
close CurEmp
deallocate CurEmp
select * from @table
如果需要从某一结果集中逐一地读取一条记录,可以用游标实现,上面是个简单的例子
相关文档:
在做sql题时,我们最怕遇到条件复杂的查询语句,因为大多时候需要两三个子查询来实现,
而大多数同学,可以说都比较怕子查询的,以前我也被这些题目弄的云里雾里的,
不过做多了这类的题目后发现,其实也有一定规律,我们可以总结一套适合自己的方法来处理,
下面时我对该类题目的处理方法:
有购物表如下:
题目: 查 ......
--行列转换 行转列
DROP TABLE t_change_lc;
CREATE TABLE t_change_lc (card_code VARCHAR2(3), q NUMBER, bal NUMBER);
INSERT INTO t_change_lc
SELECT '001' card_code, ROWNUM q, trunc(dbms_random.VALUE * 100) bal from dual CONNECT BY ROWNUM <= 4
UNION
SELECT '002' card_code, ROWNUM q, tru ......
如果一个 SQL 语句发生了错误,那么 sqlca.sqlcode 将是非零值。
如果 sqlca.sqlcode 小于 0 那么就是发生了某种严重的错误,象数据库定义与查询定义不一致等.
如果大于 0 则是通常的错误,象表不包括所要求的行等.
sqlca.sqlcode == 0,成功
sqlca.sqlcode == -1 失败 (获取具体失败信息 ......
第二部分
1.所有男生的姓名、年龄:
Select Sname,Sage
from student;
2.所有年龄大于20,计算机科学系学生名单:
SELECT Sname
from Student
WHERE Sage>20 AND Sdept='CS';
3.成绩大于60的学生学号:
SELECT Sno
from SC
WHERE Grade>60;
4.成绩在70到80之间的学生学号:
SELECT Sno
from SC
......
数据库sql语句系列都是以下面的表为基础的
1. 写出步骤4中的各项操作的SQL语句。
① 给学生表增加一属性Nation(民族),数据类型为Varchar(20);
alter table Student add Nation varchar(20);
② 删除学生表中新增的属性Nation;
alter table Student DR ......