注册

DM8调用系统包DBMS_SQL出现问题-求建议-在线等【急】

DL 2021/08/18 1128 1

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:8
【操作系统】:x86
【CPU】:
【问题描述】*:

1、达梦数据库 貌似不支持 DBMS_SQL.VARCHAR2S,改成 DBMS_SQL.VARCHAR2A 后报错 [PARSE]调用参数不兼容或者不匹配
请问怎么解决?

2、报错截图
修改前:
a64f71b3bdb37902defed9fe83371b3.png
修改后:
c050d3a28cabee545c9d111bbc8881d.png

3、源代码如下
CREATE OR REPLACE PACKAGE “PKG_2222UTIL” as

type t_bind_var is record(
bind_name varchar2(20),
bind_value varchar2(200));
type t_bind_var_tab is table of t_bind_var INDEX BY BINARY_INTEGER;
type r_for_mr_rec is record(
COLUMN_NAME user_tab_columns.COLUMN_NAME%type);
type t_for_mr_tab is table of r_for_mr_rec INDEX BY BINARY_INTEGER;
function fun_exec_long_sql(l_stmt DBMS_SQL.VARCHAR2A,
bind_tab t_bind_var_tab) return NUMBER;
function fun_exec_large_sql_g(C1 IN CLOB,C2 IN CLOB,C3 IN CLOB,C4 VARCHAR2) RETURN NUMBER;
end;

CREATE OR REPLACE PACKAGE BODY “SYSDBA”.“PKG_2222UTIL” as
function fun_exec_long_sql(l_stmt DBMS_SQL.VARCHAR2A,
bind_tab t_bind_var_tab) return number as
l_cursor integer default dbms_sql.open_cursor;
l_rows number default 0;
begin
dbms_sql.parse(c => l_cursor,
statement => l_stmt,
lb => l_stmt.FIRST,
ub => l_stmt.FIRST,
lfflg => TRUE,
language_flag => dbms_sql.native);
for i in 1 … bind_tab.count loop
dbms_sql.bind_variable(l_cursor,
bind_tab(i).bind_name,
bind_tab(i).bind_value);
end loop;
l_rows := dbms_sql.execute(l_cursor);
dbms_sql.close_cursor(l_cursor);
return l_rows;
end;
END;
alter package “SYSDBA”.“PKG_2222UTIL” compile;

回答 0
暂无回答
扫一扫
联系客服