.0 预防字段空值的处理
SELECT DEPTNO ,DEPTNAME ,COALESCE(MGRNO ,'ABSENT'),ADMRDEPT
FROM DEPARTMENT
COALESCE函数返回()中表达式列表中第一个不为空的表达式,可以带多个表达式。
和oracle的isnull类似,但isnull好象只能两个表达式。
. 取得处理的记录数
declare v_count int;
update tb_test set t=’0’
where t=’’;
--检查修改的行数,判断指定的记录是否存在
get diagnostics v_ count=ROW_COUNT;
只对update,insert,delete起作用.
不对select into 有效
. 从存储过程返回结果集(游标)的用法
、建一sp返回结果集
CREATE PROCEDURE DBINST.Proc ( )
LANGUAGE SQL
result sets (返回两个结果集)
------------------------------------------------------------------------
-- SQL 存储过程
------------------------------------------------------------------------
P: BEGIN
declare c cursor with return to caller for
select market_code
from tb_market_code;
--指定该结果集用于返回给调用者
declare c cursor with return to caller for
select market_code
from tb_market_code;
open c;
open c;
END P
、建一SP调该sp且使用它的结果集
CREATE PROCEDURE DBINST.Proc (
out out_market_code char())
LANGUAGE SQL
------------------------------------------------------------------------
-- SQL 存储过程
------------------------------------------------------------------------
P: BEGIN
declare loc,loc result_set_locator varying;
--建立一个结果集数组
call proc;
--调用该SP返回结果集。
associate result set locator(loc,loc) with procedure proc;
--将返回结果集和结果集数组关联
allocate cursor cursor for result set loc;
allocate cursor cursor for result set loc;
--将结果集数组分配给cursor
fetch cursor into out_market_code;
--直接从结果集中赋值
close cursor;
END P
、动态SQL写法
DECLARE CURSOR C FOR STMT;
PREPARE STMT FROM
'ALLOCATE C CURSOR FOR RESULT SET ?';
、注意:
一、 如果一个sp调用好几次,只能取到最近一次调用的结果集。
二、 allocate的cursor不能再次open,但可以close,是close sp中的对应cursor。
. 类型转换函数
select cast ( current time as char(8)) from tb_market_code
. 存储过程的互相调用
目前,c sp可以互相调用。
Sql sp 可以互相调用,
Sql sp 可以调用C sp,
但C sp 不可以调用Sql sp(最新的说法是可以)
. C存储过程参数注意
create procedure pr_clear_task_ctrl(
IN IN_BRANCH_CODE char(),
IN IN_TRADEDATE char(8),
IN IN_TASK_ID char(),
IN IN_SUB_TASK_ID char(),
OUT OUT_SUCCESS_FLAG INTEGER )
DYNAMIC RESULT SETS 0
LANGUAGE C
PARAMETER STYLE GENERAL WITH NULLS(如果不是这样,sql 的sp将不能调用该用c写的存储过程,产生保护性错误)
NO DBINFO
FENCED
MODIFIES SQL DATA
EXTERNAL NAME 'pr_clear_task_ctrl!pr_clear_task_ctrl'@








