procedure RemoveData
(
t_userId in number, --用户Id
t_logType in number,
t_logId in varchar2,
ReturnCode out number --返回值
)
is
nFileSize NUMBER(10) := 0;
temp_sql varchar2(500);
begin
temp_sql := 'SELECT sum(fileSize) from blog_userPicturesHistory
WHERE
userId = ' || t_userId ||'
AND pictureId IN(' || t_logId || ')';
EXECUTE IMMEDIATE temp_sql INTO nFileSize;
commit;
EXCEPTION
when OTHERS then
rollback;
raise;
return;
end RemoveData;大家帮忙看看为啥nFileSize得到的值总是NULL???temp_sql的语句单独执行是可以得到值的,但是通过EXECUTE IMMEDIATE执行并赋给nFileSize,则只能得到空值。
(
t_userId in number, --用户Id
t_logType in number,
t_logId in varchar2,
ReturnCode out number --返回值
)
is
nFileSize NUMBER(10) := 0;
temp_sql varchar2(500);
begin
temp_sql := 'SELECT sum(fileSize) from blog_userPicturesHistory
WHERE
userId = ' || t_userId ||'
AND pictureId IN(' || t_logId || ')';
EXECUTE IMMEDIATE temp_sql INTO nFileSize;
commit;
EXCEPTION
when OTHERS then
rollback;
raise;
return;
end RemoveData;大家帮忙看看为啥nFileSize得到的值总是NULL???temp_sql的语句单独执行是可以得到值的,但是通过EXECUTE IMMEDIATE执行并赋给nFileSize,则只能得到空值。
写法有问题,楼主尝试替换成实际的数据进行测试,应该就没有问题
WHERE userId = &t_userId AND pictureId IN(&t_logId);
可以正常执行么
不明白你的意思 为啥要换成&??
pictureId IN(''' || t_logId || ''')';