to LinZhongBao(【豹哥】) 那为什么我把 insert into test values(appkey,namec); 注释掉, 这个函数就执行正常, 否则老是返回-99,(表示出错)。注意,我以脚本的方式执行 insert into test values(appkey,namec); 是正常的。
会不会是nvarchar2与varchar2的匹配问题?建议改成varchar2试试
如果我用如下的‘脚本方式’来执行,就OK declare a number; begin a:=fun_test('kk'); dbms_output.PUT_LINE(a); end;但是,如果执行以下的查询语句,就返回-99 select fun_test('kk') from dual;请问,这是为什么?
有更新操作的函数,不能用select调用
TO lixin5678(li) 那么,我要怎么调用,又如何才能获取结果?
函数里面只有insert 没有commit(提交)?
当然可以用CREATE OR REPLACE FUNCTION Fun_Test(app_key varchar2) RETURN NUMBER IS tmpVar NUMBER;appkey nvarchar2(50); namec nvarchar2(500); ncount number(10); BEGIN tmpVar := 0; select count(*) into ncount from city where city_no=app_key; if ncount=1 then select city_no,name_c into appkey,namec from city where city_no = app_key;insert into test values(appkey,namec);RETURN 1; else return 2; end if; EXCEPTION WHEN OTHERS THEN return -99; END Fun_Test;
你确定在函数内部可以用insert语句?
那为什么我把 insert into test values(appkey,namec); 注释掉,
这个函数就执行正常,
否则老是返回-99,(表示出错)。注意,我以脚本的方式执行 insert into test values(appkey,namec); 是正常的。
declare a number;
begin
a:=fun_test('kk');
dbms_output.PUT_LINE(a);
end;但是,如果执行以下的查询语句,就返回-99
select fun_test('kk') from dual;请问,这是为什么?
没有commit(提交)?
tmpVar NUMBER;appkey nvarchar2(50);
namec nvarchar2(500);
ncount number(10);
BEGIN
tmpVar := 0;
select count(*) into ncount from city where city_no=app_key;
if ncount=1 then
select city_no,name_c into appkey,namec from city where city_no = app_key;insert into test values(appkey,namec);RETURN 1;
else
return 2;
end if;
EXCEPTION
WHEN OTHERS THEN
return -99;
END Fun_Test;