存储过程的if,else怎么写
存储过程的if,else怎么写?
Oracle 是下面这种写法:
IF testvalue > 100 THEN
dbms_output.put_line( '100+' );
ELSIF testvalue = 100 THEN
dbms_output.put_line( '100' );
ELSE
dbms_output.put_line( '100-' );
END IF;
DB2, MYSQL 是下面这种写法: ( 与 Oracle 区别在于那个 ELSIF )
IF p_val > 100 THEN
INSERT INTO output_debug VALUES( '100+' );
ELSEIF p_val = 100 THEN
INSERT INTO output_debug VALUES( '100' );
ELSE
INSERT INTO output_debug VALUES( '100-' );
END IF;
SQL Server 有些差别:
IF @testvalue > 100
BEGIN
PRINT( '100+' );
END
ELSE IF @testvalue = 100
BEGIN
PRINT( '100' );
END
ELSE
BEGIN
PRINT( '100-' );
END
oracle 存储过程里的if else
create or replace procedure p_run_temp as
S_DATE:=to_number(to_char(sysdate,'d'),'9');--查询下to_char这个函数是否有问题
begin
if S_date=4 then
p_temp();
else
p_temp2();
end if ;
end p_run_temp;
存储过程一般用AS。而且题中的存储过程语法也有问题。
oracle 存储过程 if语句
&&用and表示,如:
if 1=1 and 2=2 then
...
end;
||用or表示。
!用not表示。
oracle存储过程 判断语句怎么写
if 条件1 then 语句1
elsif 条件2 then 语句2
else 语句3
end if;
oracle存储过程IF判断问题
你的IF 逻辑有问题:当输入37的时候 flag>5 肯定结果是1,不会进入else了。
你可以再第一行加上FLAG<=10 然后试试。
当然你下面的逻辑还有问题,你自己去琢磨琢磨,根据你的需求慢慢改吧!
IF FLAG>5 and FLAG<=10 THEN
V_VALUE :=1;
ELSIF FLAG>10 THEN
V_VALUE :=2;
ELSIF FLAG<20 THEN
V_VALUE :=3;
ELSIF FLAG<39 THEN
V_VALUE :=4;
ELSE V_VALUE :=5;
END IF;
实在搞不懂逻辑,可以用switch……case……这样清晰些。
oracle存储过程中嵌套多个if
BEGIN
IF (1 = 1) THEN
DBMS_OUTPUT.PUT_LINE('这是第一层的if');
IF (1 = 1) THEN
DBMS_OUTPUT.PUT_LINE('这是第二层的if');
END IF;
ELSE
DBMS_OUTPUT.PUT_LINE('这是第一层的else');
END IF;
END;
这个是我测试的 不会被第一个if截断 是不是你脚本有问题?
oracle存储过程IF判断的问题
问题1:当你传入37 时,IF FLAG>5 已经满足条件了,直接V_VALUE :=1;,不会继续判断了。然后就调到end if。可以按f9调试,不信一步步看它的执行过程。
问题2:IF V_NULL=NULL,不是这样写,是IF V_NULL IS NULL ,就会输出888啦。
oracle存储过程中写IF ELES
if 1=1 then
--
eles
--
end if ;
oracle存储过程中if条件后的sql没有执行
你把你这两个 dbms输出的语句注释掉试下,你这两个语句后面都有封号,不是代表if语句已经结束了吗
oracle 存储过程中if else的应用
if( a==1 && b==1) 这样写:
if a = 1 and b = 1 then
-- 里面写if成立情况的代码
else
-- else情况
end if;
if(a==1 | | b==1) 这样写:
if a = 1 or b = 1 then
-- 里面写if成立情况的代码
else
-- else情况
end if;
存储过程的if,else怎么写:等您坐沙发呢!