oracle将列名进行拼接,请教关于用拼接的字符串作为表的列名进行操作的问题

用动态语句就可以了

给你我自己写的一个函数做一下参考吧

CREATE OR REPLACE Function PRODDTA.F_getGlobeQty(PRP9 CHAR,SRP3 CHAR,UPRC NUMBER,Math05 Number)

Return Number

Authid Current_User

As

/* 作者:699964

功能:取新款下单初始量

日期:2008-02-20

*/

MATH_UP Number;

MATH_DOWN Number;

v_sql1 Varchar(1000);

v_sql2 Varchar(1000);

v_name1 Varchar(10);

v_name2 Varchar(10);

v_name3 Varchar(10);

v_name4 Varchar(10);

qty_up Number;

qty_down Number;

V_PQA1 Number;

V_PQA2 Number;

GLOBE_QTY Number;

Begin

MATH_UP := ceil(Math05);

MATH_DOWN := trunc(Math05);

v_name1 := 'PESQ0'||TO_CHAR(5 - MATH_UP);

v_name2 := 'PESQ0'||TO_CHAR(5 - MATH_DOWN);

v_name3 := 'PEPQA'||TO_CHAR(5 - MATH_UP);

V_NAME4 := 'PEPQA'||TO_CHAR(5 - MATH_DOWN);

v_sql1 := 'select '||V_NAME1||','||V_NAME2||' FROM proddta.F660045F where PESRP3 = '||SRP3||' and peminprice <='||uprc||' and pemaxprice >'||uprc;

Execute Immediate v_sql1 Into qty_up,QTY_DOWN;

V_SQL2 := 'SELECT '||V_NAME3||','||V_NAME4||' FROM proddta.F660048d where peprp9 = '||prp9||' and peminprice <='||uprc||' and pemaxprice >'||uprc;

--dbms_output.put_line(v_sql);

Execute Immediate v_sql2 Into V_PQA1,V_PQA2;

GLOBE_QTY := ROUND(((nvl(qty_up,0)/10000)*(V_PQA1) - (nvl(QTY_DOWN,0)/10000)*(V_PQA2))*(MATH05 - MATH_down) + (nvl(QTY_DOWN,0)/10000)*(V_PQA2))*10000;

--dbms_output.put_line(TO_CHAR(QTY_UP)||','||TO_CHAR(V_PQA1)||','||TO_CHAR(QTY_DOWN)||','||TO_CHAR(V_PQA2)||','||TO_CHAR(MATH05)||','||TO_CHAR(MATH_DOWN));

Return GLOBE_QTY;

Exception

When Others Then

Return 0;

End;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值