参考:
http://zhidao.baidu.com/link?url=kbl7lBd1f-fFPWU64ZbbAAOdy8snJ6eqJTzV3iEb81MdyTjQugk0TOnJVjyymjh7rTGCTfpCIGMifGmuDi--dK
2、execute[immediate]+[Str]
执行[Str]所表示的语句,常用||进行字符串组织。可于自动化过程中使用
3、exception与return
常用的对预定义错误的处理:
e.g.
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('数据库中没有编码为'||v_empno||'的员工');
WHEN TOO_MANY_ROWS THEN
DBMS_OUTPUT.PUT_LINE('程序运行错误!请使用游标');
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLCODE||'---'||SQLERRM);
该语句于整个过程中遇到情况时即生效,因此需要使用return跳出procedure,中断对procedure的执行。
典型的错误日志处理语句如下:
e.g.
EXCEPTION
WHEN OTHERS THEN
v_RetErrFlg := 'E';
v_RetCode := v_ErrCode;
v_Msg := 'SQLCODE:' || v_TabName || '表' ||
SUBSTR(SQLERRM, 1, 500);
on_Result := SQLCODE;
ROLLBACK;
SP_WriteDetailLog(v_work_date,
v_JobName,
v_Msg,
v_RetCode,
v_RetSubCode,
v_RetErrFlg);
RETURN;
其中SQLERRM为错误返回码,仅能在赋予变量后再取变量获取。
3、常用的系统视图
user_tab_colum:查询列属性
user_tables:表属性
其中通过选取table_name 列可以选取对应的表(中的列)
4、data_precision与data_length
data_length:当前列数据类型的字节长度
如:EMPNO NUMBER(4) 22
ENAME VARCHAR2(10) 20
data_precision:列相关数据类型(数字类型)的具体长度(有效位数),一个十进制数(NUMBER类型),或一个二进制树(FLOAT类型)
在number类型中为其整数部分
如:SAL NUMBER(7,2) 7
值得注意的是varchar2(n)类型的长度为2n