如何执行带有 clob 参数的 Oracle 过程?
How to execute Oracle procedure with clob parameter in?
我有程序
create or replace PROCEDURE PROC_PROJPREL_TEMPL_SERV_MAT(
P_TABELA IN VARCHAR2,
P_COLUNAS IN VARCHAR2,
P_DADOS IN CLOB,
O_CODIGO OUT NUMBER,
O_MENSAGEM OUT VARCHAR2
) IS
BEGIN
o_codigo := 0;
o_mensagem := '';
-- no implementation coded yet
EXCEPTION
WHEN OTHERS THEN
raise_application_error(-20101, 'erro ao executar procedure ');
END PROC_PROJPREL_TEMPL_SERV_MAT;
我需要在 SQL Developer 中执行此操作。
我试过使用匿名块
declare
i_tabela varchar2(30);
i_colunas varchar2(4000);
i_dados clob;
o_codigo number;
o_mensagem varchar2(4000);
begin
i_tabela := 'table_name'; -- max 30 characters
i_colunas := 'columns_names'; -- less 4000 characters
i_dados := '45000 characters';
proc_projprel_templ_serv_mat(i_tabela, i_colunas, i_dados, o_codigo, o_mensagem);
end;
但是 returns 出现错误“字符串文字太长”
我也尝试使用“call”命令。
call proc_projprel_templ_serv_mat('table_name', 'columns_names', &DATAS);
但它returns错误ORA-00972标识符太长,原因:指定了超过30个字符的标识符,行动:最多指定30个字符。
有人可以帮助我吗?
PL/SQL 中字符串文字的最大长度为 32,767 个字符。正如错误“字符串文字太长”所说的那样,您在这里超出了这个限制:
i_dados := '45000 characters';
您必须将该字符串分成最多 32,767 个字符长的部分并将它们连接在一起,例如:
i_dados := 'first 32767 characters' ||
'remaining 12233 characters';
我有程序
create or replace PROCEDURE PROC_PROJPREL_TEMPL_SERV_MAT(
P_TABELA IN VARCHAR2,
P_COLUNAS IN VARCHAR2,
P_DADOS IN CLOB,
O_CODIGO OUT NUMBER,
O_MENSAGEM OUT VARCHAR2
) IS
BEGIN
o_codigo := 0;
o_mensagem := '';
-- no implementation coded yet
EXCEPTION
WHEN OTHERS THEN
raise_application_error(-20101, 'erro ao executar procedure ');
END PROC_PROJPREL_TEMPL_SERV_MAT;
我需要在 SQL Developer 中执行此操作。
我试过使用匿名块
declare
i_tabela varchar2(30);
i_colunas varchar2(4000);
i_dados clob;
o_codigo number;
o_mensagem varchar2(4000);
begin
i_tabela := 'table_name'; -- max 30 characters
i_colunas := 'columns_names'; -- less 4000 characters
i_dados := '45000 characters';
proc_projprel_templ_serv_mat(i_tabela, i_colunas, i_dados, o_codigo, o_mensagem);
end;
但是 returns 出现错误“字符串文字太长”
我也尝试使用“call”命令。
call proc_projprel_templ_serv_mat('table_name', 'columns_names', &DATAS);
但它returns错误ORA-00972标识符太长,原因:指定了超过30个字符的标识符,行动:最多指定30个字符。
有人可以帮助我吗?
PL/SQL 中字符串文字的最大长度为 32,767 个字符。正如错误“字符串文字太长”所说的那样,您在这里超出了这个限制:
i_dados := '45000 characters';
您必须将该字符串分成最多 32,767 个字符长的部分并将它们连接在一起,例如:
i_dados := 'first 32767 characters' ||
'remaining 12233 characters';