oracle怎么寫IF語句
如果是 SQL 語句里面使用。
使用 DECODE 或者 CASE WHEN
DECODE 的用法就是
DECODE(abc, 50, 'A', 'B')
CASE WHEN 的用法就是
CASE WHEN abc=50 THEN 'A' ELSE 'B' END
如果是在存儲過程里面的話,就是簡單的 IF/ELSE 了
SQL 語句的話,就是
SELECT
abc, DECODE(abc, 50, 'A', 'B')
FROM
表
ORACLE sql 里面可以用if 語句嗎
insert 語句中值的順序如果和表結構一致可以省略列名列表。
這個SQL的意思沒看懂,我給分析一下看對不對,你是不是想表達這個意思:如果在yangao這個表中存在age3=4的數據,那么,就向yangao中插入一行數據,行數據的內容是(4,NULL,1).如果是這樣的話,那么IF用的是不對的。在SQL里面條件的關鍵字是WHERE。
insert into yangao values(4,NULL,1) where exists (select * from yangao where(AGE3=4)); commit;但如果你想表達的是:在yangao表中插入一條數據,如果存在(select * from yangao where(AGE3=4)) 這樣的數據就提交的話,那么應該這么寫: insert into yangao values (4, NULL, 1); select count(*) into n_count from yangao where (AGE3 = 4); if n_count > 0 then commit; end if;。
ORACLE中觸發器的判斷IF語句
加一行 NULL 即可
例如:
SQL> DECLARE
2 testvalue INT;
3 BEGIN
4 testvalue := 200;
5
6 IF testvalue > 100 THEN
7
8 ELSIF testvalue = 100 THEN
9 dbms_*_line( '100' );
10 ELSE
11 dbms_*_line( '100-' );
12 END IF;
13
14 END;
15 /
ELSIF testvalue = 100 THEN
*
ERROR 位于第 8 行:
ORA-06550: 第 8 行, 第 9 列:
PLS-00103: 出現符號 "TESTVALUE"在需要下列之一時:
:= . ( @
% ;
ORA-06550: 第 14 行, 第 4 列:
PLS-00103: 出現符號 ";"在需要下列之一時:
if
上面的例子, 可以看出,如果 IF ELSE 里面, 沒有內容, 那么編譯不通過。
下面是 加一行 NULL 通過的例子:
SQL> DECLARE
2 testvalue INT;
3 BEGIN
4 testvalue := 200;
5
6 IF testvalue > 100 THEN
7 NULL;
8 ELSIF testvalue = 100 THEN
9 dbms_*_line( '100' );
10 ELSE
11 dbms_*_line( '100-' );
12 END IF;
13
14 END;
15 /
PL/SQL 過程已成功完成。
ORACLE sql 里面可以用if 語句嗎
insert 語句中值的順序如果和表結構一致可以省略列名列表。
這個SQL的意思沒看懂,我給分析一下看對不對,
你是不是想表達這個意思:
如果在yangao這個表中存在age3=4的數據,那么,就向yangao中插入一行數據,行數據的內容是(4,NULL,1).
如果是這樣的話,那么IF用的是不對的。
在SQL里面條件的關鍵字是WHERE。
insert into yangao values(4,NULL,1)
where exists (select * from yangao where(AGE3=4));
commit;
但如果你想表達的是:
在yangao表中插入一條數據,如果存在(select * from yangao where(AGE3=4)) 這樣的數據就提交的話,那么應該這么寫:
insert into yangao values (4, NULL, 1);
select count(*) into n_count from yangao where (AGE3 = 4);
if n_count > 0 then
commit;
end if;
ORACLE中觸發器的判斷IF語句
加一行 NULL 即可例如:SQL> DECLARE 2 testvalue INT; 3 BEGIN 4 testvalue := 200; 5 6 IF testvalue > 100 THEN 7 8 ELSIF testvalue = 100 THEN 9 dbms_*_line( '100' ); 10 ELSE 11 dbms_*_line( '100-' ); 12 END IF; 13 14 END; 15 / ELSIF testvalue = 100 THEN *ERROR 位于第 8 行:ORA-06550: 第 8 行, 第 9 列:PLS-00103: 出現符號 "TESTVALUE"在需要下列之一時::= . ( @% ;ORA-06550: 第 14 行, 第 4 列:PLS-00103: 出現符號 ";"在需要下列之一時:if上面的例子, 可以看出,如果 IF ELSE 里面, 沒有內容, 那么編譯不通過。
下面是 加一行 NULL 通過的例子:SQL> DECLARE 2 testvalue INT; 3 BEGIN 4 testvalue := 200; 5 6 IF testvalue > 100 THEN 7 NULL; 8 ELSIF testvalue = 100 THEN 9 dbms_*_line( '100' ); 10 ELSE 11 dbms_*_line( '100-' ); 12 END IF; 13 14 END; 15 /PL/SQL 過程已成功完成。
Oracle if 語句問題
oracle跟sqlserver不同
if 后 then就可以
而sqlserver中
if 后不跟then ,而是跟begin 。.end;
所以你第一個是對的,第二個應該會報錯的
同時update后需要commit;這個lz需要注意一下,否則只在當前會話中update生效,重新再開一個會話還會發現數據沒寫進去
還有,你select 。into那句,xx必須只能是一個值,不能是一列里N多條記錄,否則一個變量不能存放N條數據,如果這種情況得需要用游標來處理
oracle 視圖 if 語句的使用
Create Or Replace View mark_vAsSelect Id,Case score When '優' Then '90' When '中' Then '75' When '差' Then '30' Else score End As scoreFrom mark或者還有個簡單的寫法:Create Or Replace View mark_vAsSelect Id,decode(score,'優','90','中','75','差','30',score) As scoreFrom mark以上希望對你有所幫助。
轉載請注明出處華閱文章網 » oracle中if語句