光标:
数据库里的一个位置,来自查询的一条记录是光标的当前值或者当前行, 通常用于从数据库获得一个子集。 可以自动创建,也可以由程序员创建。
光标的声明:(不同的数据库,光标的声明是不一样的)
打开光标:open cursor_name [parameter1 ] [ , parameter2] . 如果是Oracle数据库,记得加方括号里的东西。
从光标处获取数据:fetch cursor_name { into : host_ variable
[ [ indicator ] : indicator_variable ]
[ indicator ] : indicator_variable ]]
| using descriptor } 此限于Orable数据库。对于mysql: fetch cursor_name into variable_name;
关闭光标:close cursor_name ,但是对于sql server 数据库,close前面最好加上关键字:deallocate。
存储过程和函数:
存储过程是保存在数据库里的一组SQL语句或者函数,他们被编译,可以被数据库用户使用。函数被过程调用。不同的数据库创建存储过程的语法不同:
执行存储过程的语法也是不一样的:
对比单个的SQL语句,利用存储过程的优点在:语句已被保存和解析、支持模块化、可调用其他函数和语法、有更好的响应时间、提高了整体易用性。
触发器:
触发器是存储过程的一种,可能导致过度io开销。
(注意不同的数据库触发器的建立不同,注意for each row的应用)。
drop trigger trigger_name;
动态SQL:其通常被用作查询的语句,允许用户随时创建SQL语句。使用调用及接口可以创建动态SQL。
调用级接口(CLI):
用于把SQL语句嵌入到主机程序。在使用调用级接口时,根据主机编程语言的规则将SQL语言文本保存到一个变量里,利用这个变量在主机程序里执行SQL语句。常见的支持CLI的语言:cobol、ansic、pascal、fortran、ada。
使用SQL生成SQL:GRANT ENABLE TO 语句和双管道符号||的使用。比如要创建一个角色enable,将其授予100个用户,可以这么写:select ‘ grant enable to ’ || username || ‘;’ from sys.dba_users;此例子使用了Oracle系统目录图。
直接SQL(交互调用或者直接调用)嵌入SQL : 是在其他程序里使用SQL,通常以EXEC SQL开始。例如在主机程序里嵌入SQL:
{ host programming commands}
EXEC SQL {SQL statement }
{ more hosr programming commands};
窗口表格函数:对表格的一个窗口进行操作,基于这个窗口返回一个值。窗口表格函数的语法如下:argument over ([partition clause ] [ order clause] [ prame clause ]);大多数汇总函数是窗口表格函数,其次还有:rank()over,dense_rank()over,percent_rank()over,cume_dist()over,row_number()over。有局限性。
使用XML:不同的数据库可以提供不同的函数来使用这个功能。