将这段sql 改成存储过程select * from book t where t.num=5058 and t.price=4747 and t.id in (select s.bookid from types s where s.typesId=5304)
红色部分为输入的参数
而且参数输入的为空 则 不要这个匹配条件两张表 一个 book表 一个types类型表 需求是一个 搜索book表 搜索条件是:num数 price价格 types 类型 这些条件可以组合 的帮帮忙啊
红色部分为输入的参数
而且参数输入的为空 则 不要这个匹配条件两张表 一个 book表 一个types类型表 需求是一个 搜索book表 搜索条件是:num数 price价格 types 类型 这些条件可以组合 的帮帮忙啊
CREATE OR REPLACE PROCEDURE select_book(num NUMBER,price NUMBER ,TYPES Number) IS get_num NUMBER;
get_price NUMBER;
get_types NUMBER;
v_sql VARCHAR2(1000);
v_sql1 VARCHAR2(100);
BEGIN
get_num:=num;
get_price:=price;
get_types:=TYPES;
v_sql:='select * from book t';
v_sql1:='select s.bookid from types s';IF (get_num='' OR get_num IS NULL) AND get_price <>'' AND get_price IS NOT NULL AND get_types<>'' AND get_types IS NOT NULL THEN
v_sql:=v_sql||' where t.price='||get_price||' and t.id in ('||v_sql1||' where s.typesId='||get_types||' ) ';
END IF;
...........---上面只是一种情况判断----以下情况再一种种加上去---
-----但只是检索语句的动态sql是得不到结果的,要写成select into from 这样的语句,才能看到into后的结果---大体是这样,ok了吧。
END;
into 结果变量
using 参数变量;