急问 :
为什么我在存储过程里面用不了 case...when...then...end 语句
如果使用不了这种语句, 如何在select 语句里面实现类似这种结构,就是要在
select 的时候加条件判断 用函数吗? 好像太繁琐
我的oracle版本是817
为什么我在存储过程里面用不了 case...when...then...end 语句
如果使用不了这种语句, 如何在select 语句里面实现类似这种结构,就是要在
select 的时候加条件判断 用函数吗? 好像太繁琐
我的oracle版本是817
select
case
when A<10 then 1
when A>=10 then 2end
from ...
也可以decode
decode (expression, search_1, result_1, search_2, result_2)
decode (expression, search_1, result_1, search_2, result_2, ...., search_n, result_n)decode (expression, search_1, result_1, default)
decode (expression, search_1, result_1, search_2, result_2, default)
decode (expression, search_1, result_1, search_2, result_2, ...., search_n, result_n, default)
SELECT CASE
WHEN (SUM(plan_quantity-NVL(actual_quantity,0))>=p_qty) THEN 1
ELSE 0
END
INTO v_return
FROM t_store_out_instructions
WHERE product_id=p_product_id
AND store_to=p_store_to;
好像 decode(a,1,'true',false);
if(a=1) then 'true' else 'false' end;
我要实现的是条件转换
if a>1 then ..... else .... end ;
如何来做呢
但是在存储过程里面 open cursor for select .... 的时候 就要报语法错误
cursor cur_roleid is SELECT CASE
WHEN (SUM(plan_quantity-NVL(actual_quantity,0))>=0) THEN 1
ELSE 0
END
FROM t_store_out_instructions ;
begin
OPEN cur_roleid;
....
end ;这样没问题
---------
你说得我不明白case 不放在select中也可以阿
而且我的存储过程可以用case阿
(我是菜鸟,别见怪)
小弟还有一问 就是存储过程里面 用select 语句的时候 在select 的字段里面 也使用了
select 语句 单独执行sql 都是对的 但是执行存储过程open cursor for select 这行会报错 这种问题如何解决呢
IS
cursor cur_roleid is SELECT CASE
WHEN (SUM(plan_quantity-NVL(actual_quantity,0))>=0) THEN 1
ELSE 0
END
FROM t_store_out_instructions ;
begin
OPEN cur_roleid;end ;没有错误啊
SELECT 需要判断的字段 INTO rs FROM ...;然后用IF rs>0 THENELSIF ... THENELSEEND IF;这种方式来判断最保险了。要不就之得升级到9了
偶也是没办法 公司一直用的都是这个版本
msn [email protected]
qq 15715807