存儲過程 if語句的使用
create proc sp_testasdeclare @_value intselect top 1 @_value = rrrid from readerinfo where readerid='s001'if @value = 0begin update readerinfo set rrrid=20 where readerid='s001'endelsebegin update readerinfo set rrrid=0 where readerid='s001'endexecute sp_test。
存儲過程的if,else怎么寫
不同的數據庫中,存儲過程中if else 語句寫法有一些差別。
如果是SQLServer數據庫,存儲過程的if, else語句可以這樣寫:
if a>b
Begin
print 'a'
End
Else if a<b
Begin
print 'b'
End
Else
Begin
print '代碼'
End Oracle 采用下面這種寫法:
IF testvalue > 100 THEN
dbms_*_line( '100+' );
ELSIF testvalue = 100 THEN
dbms_*_line( '100' );
ELSE
dbms_*_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;
oracle 存儲過程中 如果用if語句判斷一條查詢語句的結果集是否為空
已經經過測試,可以。
create table test1023(id int); --創建測試表 test1023
declare cnt int;
begin
select count(*) into cnt from test1023;
if cnt=0 then
insert into test1023 values('1');
commit;
end if;
end;
請教ms sqlserver存儲過程如何寫多個if語句
select @user_blog_lock='yes'elseselect @user_blog_lock='no'GO這樣寫,后面那二條語句是沒有執行到的。用到else if 是錯誤的語法,如果都都用if,第二條語句以后都不能執行了
變量的輸入是對的。
第二、三條IF語句是不能執行了。看聯機叢書 F1
-----------------------IF。ELSE在執行 Transact-SQL 語句時強加條件。如果條件滿足(布爾表達式返回 TRUE 時),則在 IF 關鍵字及其條件之后執行 Transact-SQL 語句。可選的 ELSE 關鍵字引入備用的 Transact-SQL 語句,當不滿足 IF 條件時(布爾表達式返回 FALSE),就執行這個語句。
語法IF Boolean_expression
{ sql_statement | statement_block }[ ELSE{ sql_statement | statement_block } ]參數Boolean_expression
是返回 TRUE 或 FALSE 的表達式。如果布爾表達式中含有 SELECT 語句,必須用圓括號將 SELECT 語句括起來。
{sql_statement | statement_block}
Transact-SQL 語句或用語句塊定義的語句分組。除非使用語句塊,否則 IF 或 ELSE 條件只能影響一個 Transact-SQL 語句的性能。若要定義語句塊,請使用控制流關鍵字 BEGIN 和 END。如果在 IF。ELSE 塊的 IF 區和 ELSE 區都使用了 CREATE TABLE 語句或 SELECT INTO 語句,那么 CREATE TABLE 語句或 SELECT INTO 語句必須指向是相同的表名。
注釋IF。ELSE 結構可以用在批處理中,存儲過程中(經常使用這種結構測試是否存在著某個參數),以及特殊查詢中。
可以在其它 IF 之后或在 ELSE 下面,嵌套另一個 IF 測試。對于嵌套層數沒有限制。
示例
A. 使用一個 IF。ELSE 塊
下面的示例顯示帶有語句塊的 IF 條件。如果書的平均價格不低于 $15,那么就顯示文本:Average title price is more than $15.
USE pubsIF (SELECT AVG(price) FROM titles WHERE type = 'mod_cook') $15BEGINPRINT 'The following titles are expensive mod_cook books:'PRINT ' 'SELECT SUBSTRING(title, 1, 35) AS Title