oracle函数里建个临时表使用动态sql时报错。
CREATEORREPLACEFUNCTIONrebate_anlayse(svarchar2,phonesvarchar2)RETURNNUMBERisV_sumNUM...
CREATE OR REPLACE FUNCTION rebate_anlayse(s varchar2,phones varchar2 )
RETURN NUMBER is V_sum NUMBER:=0 ;
tempTbl varchar2(1000);
v_sql varchar2(1000);
BEGIN
tempTbl:=' CREATE GLOBAL TEMPORARY TABLE tempTable '+
' on commit preserve rows '+
' AS'+
' SELECT * FROM ('+
' SELECT mobiles ,nvl(winamt,0) winamt,windate,wintype FROM t_act_wintxn_group t '+
' union all'+
' SELECT product_no, nvl(win_money,0) win_money,win_date,''省内立返非油'' FROM t_act_win_txn_his y'+
' union all'+
' SELECT product_no ,nvl(win_money,0) win_money,win_date,''省内立返非油'' FROM t_act_win_txn t'+
' ) ';
EXECUTE IMMEDIATE tempTbl;
我贴的是我一半的代码,因为报错一直提示第六行tempTbl:=' 。。。这个行报: ora 06502数字或值错误,字符到值的转换错误。我很奇怪,那里问题啊??
下面是所有代码的,图,如有错误指正,不胜感激!!!
动态sql换行是||吗?换了之后:报16行
EXECUTE IMMEDIATE tempTbl;
报orac-14552在查询或dml无法执行ddl。提交或回退。这个是什么情况? 展开
RETURN NUMBER is V_sum NUMBER:=0 ;
tempTbl varchar2(1000);
v_sql varchar2(1000);
BEGIN
tempTbl:=' CREATE GLOBAL TEMPORARY TABLE tempTable '+
' on commit preserve rows '+
' AS'+
' SELECT * FROM ('+
' SELECT mobiles ,nvl(winamt,0) winamt,windate,wintype FROM t_act_wintxn_group t '+
' union all'+
' SELECT product_no, nvl(win_money,0) win_money,win_date,''省内立返非油'' FROM t_act_win_txn_his y'+
' union all'+
' SELECT product_no ,nvl(win_money,0) win_money,win_date,''省内立返非油'' FROM t_act_win_txn t'+
' ) ';
EXECUTE IMMEDIATE tempTbl;
我贴的是我一半的代码,因为报错一直提示第六行tempTbl:=' 。。。这个行报: ora 06502数字或值错误,字符到值的转换错误。我很奇怪,那里问题啊??
下面是所有代码的,图,如有错误指正,不胜感激!!!
动态sql换行是||吗?换了之后:报16行
EXECUTE IMMEDIATE tempTbl;
报orac-14552在查询或dml无法执行ddl。提交或回退。这个是什么情况? 展开
若以下回答无法解决问题,邀请你更新回答
2个回答
展开全部
“+”是什么?
应该是“||”吧
应该是“||”吧
更多追问追答
追问
动态sql换行是||吗?换了之后:
EXECUTE IMMEDIATE tempTbl;
报14552在查询或dml无法执行ddl。提交或回退。这个是什么情况?
追答
“||”不是换行,是连接啊,你在查询的时候不是用||将两个字符串连起来的么。这里也是这样的。你这个函数式过程调用吧,你在调用这个函数时,是怎么调用的。如果有select语句调用它,那么很定不能执行啊,因为select * from A,你认为能创建一个表么。有insert什么的也不行啊,这个函数只能直接用exec 调用,不能够用其他方式调用的。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
喜欢 动态建 临时表来实现业务 ,这是个很坏的习惯。后面的动态SQL也没考虑绑定变量什么的,如果是真用在业务上,那么呵呵。。。
更多追问追答
追问
这个是统计型的业务,统计7,,8个数据,数据要3张表union all到一起,在sql这个union all语句会多次用到,所以我放到临时表,一次性来调用,同时作统计的地方放入函数中,不知有什么解答办法吗?
追答
开个游标不就好了?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询