FORM中执行动态sql语句

今天在 FORM BUILDER中用 execute immediate 'sql staments'执行动态sql时报错。

后查发现form中用forms_ddl函数执行动态sql,并且此函数暗含了commit;

详细介绍如下:

一、FORMS_DDL函数

FUNCTION FORMS_DDL(statement  VARCHAR2);

    用于动态执行SQL语句与PL/SQL语句

注意事项:

     1、参数statement的最大容量不能超过32K。

     2、DDL类型的SQL语句,暗含一个commit命令。

二、EXEC_SQL包

用于动态执行DDL类型与DML类型的SQL语句。

EXEC_SQL包的一般使用步聚:

第一步:连接数据库:

     EXEC_SQL.Open_Connection /EXEC_SQL.Default_Connection

第二步:创建一个指针变量 (游标):

     EXEC_SQL.Open_Cursor

第三步:为指针变量加载一个SQL语句(DDL、DML): EXEC_SQL.Open_Cursor

第四步:执行所加载一个SQL语句:

     EXEC_SQL.Execute

第五步:批量针变量(游标)与关闭数据库连接:

     EXEC_SQL.Is_Open、EXEC_SQL.Close_Cursor 、EXEC_SQL.Close_Cursor、EXEC_SQL.Close_Cursor

三、总结

1、FORMS_DDL函数主要用于动态执行DDL类型的SQL语句(可以理解为因FORM中不能直接使用DDL类型的SQL语句。)。 FORMS_DDL函数只能作用于当前FORM所连接的数据库。

2、 EXEC_SQL包主要有两个重要用途:

    第一:用于动态执行select语句并返回一个结果集。

    第二:用于不同数据库之间数据访问。

原文地址:https://www.cnblogs.com/gary-bao/p/4261853.html