oracle存储过程in条件查询
A. oracle数据库中in和=有什么区别吗,对于查询的效率有什么影响吗,谢谢
in是对一个查老祥询后结果集的操作,=是对单个字段值的判断,都是用于筛选,我者含猛想=快些,in毕竟还要执行首桥一个遍历结果集
B. oracle存储过程中循环for in是如何使用的
1、首先编写存储过程的整体结构,如下图所示定义变量。
C. Oracle中如何写带条件的查询存储过程并返回查询结果集
create or replace procere p_cnt(
p_time in varchar2,---查询的条件
p_cur out SYS_REFCURSOR)---游标返回
IS
v_sql varchar2(1000) :='';
v_date varchar2(20);
BEGIN
v_date := replace(p_time, '-', '');---时间的格式转换
v_sql := 'select * from dapartment d where d.d_time ='''|| v_date||'''';
END;
OPEN p_cur FOR v_sql;
END p_cnt;
D. oracle存储过程条件查询
--先在包里面定义一个指针类型mycur供后续存储过程使用
create or replace package PKG_STUDENT_OPEAR is
type mycur is ref cursor;
end PKG_STUDENT_OPEAR;
--定义存储过程,里面根据参数拼接sql语句,最终得到结果
create or replace procere query_temp(in_a in varchar2,
in_b in varchar2,
in_c in varchar2,
in_d in varchar2,
rescur out PKG_STUDENT_OPEAR.mycur) is
str_sql varchar2(500);
begin
str_sql := 'select tt.* from table tt where 1=1 ';
if in_a is not null or nvl(in_a, 'null') <> 'null' then
str_sql := str_sql || ' and tt.a = ''' || in_a || '''';
end if;
if in_b is not null or nvl(in_b, 'null') <> 'null' then
str_sql := str_sql || ' and tt.b = ''' || in_b || '''';
end if;
if in_c is not null or nvl(in_c, 'null') <> 'null' then
str_sql := str_sql || ' and tt.c = ''' || in_c || '''';
end if;
if in_d is not null or nvl(in_d, 'null') <> 'null' then
str_sql := str_sql || ' and tt.d = ''' || in_d || '''';
end if;
open rescur for str_sql;
end query_temp;
E. oracle存储过程中循环for in是如何使用的
这样使用的:
for
xx
in
(select
语句)
这是隐式游标,这个结构中不能带参数,或者说普通的游标,隐式或显式的都不能带参数,使用参数游标或引用(动态)游标。
例如:
declare
cursor cur(C_value number) is select col_A,col_B from tableA where col_C=C_value
;
begin
for xx in cur loop
--处理
end loop;
end
(5)oracle存储过程in条件查询扩展阅读:
注意事项
使用for循环实现
declare
cursor
cur
is
select
*
from
tablename;
aw_row
tablename%rowtype;
begin
for
raw_row
in
cur
loop
dbms_output.put_line('test');
end
loop;
end;
for语句直接帮做了游标的打开关闭,以及判断工作,所以比较常用。
F. oracle存储过程提问:oracle 用存储过程将某一表里符合条件的数据查出来之后,批量插入另一张表中
先把表创建起来,然后用insert语句插入。
create or replace procere P_Insert(v_date in varchar2,v_cp varchar2) is
begin
INSERT INTO ora201301 SELECT * FROM bh
WHERE 字段名1 BETWEEN v_date||'/01' AND v_date||'/31' AND 字段名2=v_cp;
COMMIT;
end P_Insert;
G. oracle 存储过程中in条件传参数
楼上的可以,不过有些语法错误,我改改,呵呵
---
create or replace procere pd1(p_1 number,p_2 number,p_3 number)
is
v_sql varchar2(4000);
begin
v_sql:='select * from table where id in('||p_1||','||p_2||','||p_3||')';
execute immediate v_sql;
end;
/