为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM8
【操作系统】:windows 10
【CPU】:英特尔
【问题描述】*:
存储过程中拼接了查询语句进行赋值给retvalue ,直接执行最后会没有任何返回提示,这种该如何处理?赋值不成功 也允许继续执行过程?
类似以下例子:
create or replace procedure datebase.test
as
declare
sql nvarchar(500);
retvalue varchar(50);
begin
set sql='select autoid from datebase.table where deptid=null;';
execute immediate sql into retvalue;
select retvalue;
end
这样是否满足您的需求
DROP TABLE IF EXISTS T_CZW PURGE ;
CREATE TABLE T_CZW(ID VARCHAR(3));
INSERT INTO T_CZW VALUES ('czw');
commit;
create or replace procedure prc_czw
is
v_sql varchar(500);
retvalue varchar(2) := 'a'; --定义为varchar2,初始化值为a
begin
v_sql :='select id from t_bb where id=''czw'';'; -- 返回长度3的字符串
begin
execute immediate v_sql into retvalue; -- retvalue 存储不下
exception
when others then
retvalue:='b';
end;
select retvalue;
end prc_czw;
call prc_czw;
想到办法了!用case when exists 如果各位大佬都有 更加简便的方法,跪求大佬分享一下经验!