oracle过程中查询语句where条件中带变量怎么实现?

DECLAREv_aVARCHAR2(20):='sal';v_infoVARCHAR2(20):='CLERK';v_sqlVARCHAR2(200);TYPEtab_... DECLARE
v_a VARCHAR2(20) := 'sal';
v_info VARCHAR2(20) := 'CLERK';
v_sql VARCHAR2(200);
TYPE tab_org_name IS TABLE OF VARCHAR2(50);
v_org_name_tab tab_org_name;
BEGIN
v_sql := 'SELECT '|| v_a ||' FROM emp WHERE emp.JOB = v_info ;
dbms_output.put_line(v_sql);
EXECUTE IMMEDIATE v_sql BULK COLLECT INTO v_org_name_tab;
FOR i IN 1 .. v_org_name_tab.count LOOP
dbms_output.put_line(v_org_name_tab(i));
END LOOP;
END;
展开
 我来答
穆亚枫
推荐于2017-09-01 · TA获得超过210个赞
知道小有建树答主
回答量:285
采纳率:100%
帮助的人:166万
展开全部
带变量的一遍需要写个过程。或者如下:
SELECT * FROM DUAL WHERE BITAND(1, 1) = &1
&1在执行的时候会提示你输入参数。如果有多个参数就&2,&3.....
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mvs2008
推荐于2017-09-25 · TA获得超过611个赞
知道小有建树答主
回答量:693
采纳率:50%
帮助的人:396万
展开全部
 v_sql := 'SELECT '|| v_a ||' FROM emp WHERE emp.JOB = v_info ;

不会报错么?

 v_sql := 'SELECT '|| v_a ||' FROM emp WHERE emp.JOB ='|| v_info ;

v_info就变量,只不过你这里是一开始就给定了值。 你可以写成procedure来接收一个参数就可以了。

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
穿云筱
2015-01-24 · TA获得超过1883个赞
知道小有建树答主
回答量:436
采纳率:0%
帮助的人:277万
展开全部
在变量前加&?
不知道你什么意思
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式