读书人

Oracle动态SQL的拼装要点

发布时间: 2012-11-12 12:31:58 作者: rapoo

Oracle动态SQL的拼装要领

Oracle的动态SQL语句用起来很方便,但其拼装过程太烦人。尤其在拼装语句中涉及到date类型字段时,拼装时要加to_char先转换成字符,到了sql中又要使用to_date转成date类型和原字段再比较。
例如这样一个SQL:

declarev_cursor number; --定义游标v_string varchar2(2999);v_row number;beginv_string := 'insert into t_object(a)  select COUNT(*) FROM user_objects where created > :incoming';--操作语句,其中:name是语句运行时才确定值的变量v_cursor:=dbms_sql.open_cursor;--打开处理游标dbms_sql.parse(v_cursor,v_string,dbms_sql.native);--解释语句dbms_sql.bind_variable(v_cursor,':incoming',sysdate-30);  --给变量赋值v_row := dbms_sql.execute(v_cursor);--执行语句dbms_sql.close_cursor(v_cursor);--关闭游标--dbms_output.put_line(v_row);commit;exceptionwhen others thendbms_sql.close_cursor(v_cursor); --关闭游标rollback;end;

读书人网 >SQL Server

热点推荐