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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle过程中查询语句where条件中带变量怎么实现?相关的知识,希望对你有一定的参考价值。

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;

参考技术A 带变量的一遍需要写个过程。或者如下:
SELECT * FROM DUAL WHERE BITAND(1, 1) = &1
&1在执行的时候会提示你输入参数。如果有多个参数就&2,&3.....
参考技术B  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来接收一个参数就可以了。

本回答被提问者和网友采纳
参考技术C 在变量前加&?
不知道你什么意思

oracle declare语句中,怎么才能定义一个变量来作为查询条件,代码如下:

begin
declare t varchar2(20);
begin
t := '13783697123';
select * from CRBT_PERSON_OPEN_CANCEL_RESULT where USER_TEL_NO=t;
end;
end;
这个代码在TOAD中提示查询时缺少INTO语句,那我应该怎么写呢
能不能给举个列子!谢谢

参考技术A 存储过程里面不支持这种直接查询的写法,这是SQL server 的用法,oracle不行,解决方法:

1.把查询结果存到变量中,写成select ** into ** from ** where **=**;的形式。

2.如果是select没有into那得用动态语句来执行才可以的,否则不行.
把select变为游标,就行了。本回答被提问者采纳

以上是关于oracle过程中查询语句where条件中带变量怎么实现?的主要内容,如果未能解决你的问题,请参考以下文章

Oracle条件查询语句-where

如何优化Oracle在where条件中用了自定义函数的SQL语句

oracle SQL查询中,如何在where中用条件语句,判断不同情况,追加不同的And条件?

oracle declare语句中,怎么才能定义一个变量来作为查询条件,代码如下:

C# SQL条件查询语句where中使用变量的用法

在PLSQL, sql语句中带有中文的查询条件查询不到数据