存儲過程ifelseif
Ⅰ 存儲過程應用語句有哪些
存儲過程與其他面向對象的程序設計語言一樣,同樣包含數據類型、流程式控制制、語句注釋、輸入和輸出與自己的函數庫。存儲過程的流程式控制制語句有ifelse、casewhenthen、while等,但沒有for循環,跟C++、Java等語言的流程式控制制語句非常類似。條件語句條件語句是流程式控制制的重要組成部分,跟其他編程語言一樣,存儲過程允許使用if關鍵字來作條件判斷,除此之外,還可以使用case來實現其他更為靈活的條件控制。
1.if語句(1)if語法if語句是最普通的條件控制語句,其語法簡單易懂,在存儲過程代碼中隨處可見,也是使用頻率最高的條件判斷語句。
語法格式:if…then…elseif…then…else…endif其中,((1)if後面跟判斷條件;
(2)elseif後面跟判斷條件;
(3)then後面跟條件分支語句塊;
(4)可以有多個elseif…then語句塊,也可以沒有;(5)else表示以上條件均不滿足時會執行的語句塊;
(6)整個條件語句塊的最後面以endif表示結束。if語句的用法,以語句「ifcondition_para=1then」開始條件控制,以語句「endif」結束條件控制,中間用「elseif」「else」作條件分支控制。單個sql語句if語法語句格式:if(expr1
Ⅱ 請教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 excellent mod_cook books:'PRINT ' 'SELECT SUBSTRING(title, 1, 35) AS Title
FROM titles
WHERE type = 'mod_cook'ENDELSEPRINT 'Average title price is more than $15.'
下面是結果集:
The following titles are excellent mod_cook books:Title-----------------------------------
Silicon Valley Gastronomic Treats
The Gourmet Microwave
(2 row(s) affected)
B. 使用多個 IF...ELSE 塊
下面的示例使用了兩個 IF 塊。如果書的平均價格不低於 $15,那麼就顯示文本:Average title price is more than $15。如果現代烹調書的平均價格高於 $15,則顯示現代烹調書價格昂貴的語句。
USE pubsIF (SELECT AVG(price) FROM titles WHERE type = 'mod_cook') < $15BEGINPRINT 'The following titles are excellent mod_cook books:'PRINT ' 'SELECT SUBSTRING(title, 1, 35) AS Title
FROM titles
WHERE type = 'mod_cook'ENDELSEIF (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
Ⅲ 在sqlserver的存儲過程中怎樣使用if-else if
跟程序中使用差不多,if,else
if,else,只不過在sqlserver中,{}使用begin和end代替,裡面嵌套什麼的,都跟程序中寫的差不多,簡單實例如下:
declare
@a
intset
@a=1if
@a<0begin
select
'小於0'endelse
if
@a=0begin
select
'等於0'endelsebegin
if
@a>0
and
@a<1
begin
select
'大於0小於1'
end
else
begin
select
'大於1'
endend在簡單看看程序代碼:int
a=1;if(a<0){
輸出小於0;}else
if(a==0){
輸出等於0;}else{
if(a>0&&a<1)
{
輸出大於0小於1;
}
else
{
輸出大於1
}}
Ⅳ sqlserver中if else的用法,我寫的這個存儲過程 提示else附近有語法錯誤
樓上正解,if-else語法為,最好不要把begin
end省略掉
if
a>b
Begin
print
'a'
End
Else
Begin
print
'b'
End
Ⅳ mysql存儲過程中if的嵌套
前幾日寫存儲過程,使用嵌套if語句的時候,碰到一個奇怪的問題,多方找原因無果。後發現是一個很sb的問題。。。
if condition1 then
if condition1.1 then
do something1.1;
else if condition1.2 then
do something1.2;
else -- 報錯的地方
do something1.3;
endif;
else
do something2.2;
endif;
如上,else那裡一直在報錯。
使用了排除法,把else那塊去掉,仍報錯。
整個中間的if那段去掉,編譯成功。
else if和else去掉,編譯成功。
else if去掉,編譯成功。
好吧,else if的問題。elseif應該是沒有空格的!!!
排除法是個好方法,細心是個好習慣😂😂😂。。。
Ⅵ ifelse語句格式
if 語句是一種分支結構,當條件滿足時,有「執行該操作語句」和「跳過執行該操作語句」的兩條分支。 if 語句的格式如下。
當 if 體中的語句多於一條時,要用 {} 把這些語句括起來形成一條復合語句,如下所示。
if (條件表達式)
{
復合語句A;
}
當 if 體為一條簡單語句時,可以省略 {},即:
if (條件表達式)
簡單語句A; //if體
該條件表達式可以是關系表達式、邏輯表達式、算術表達式或混合表達式等。只要其值為真或非零均執行 if 體。例如:
if (a>6) //關系表達式,當 a>6 時表達式值為真,執行if體
Statement(s);
if (a||b) //邏輯表達式,只要a、b中有一個為真,結果為真,執行if體
Statement(s);
if (3-6) //算術表達式,只要該表達式的值非0,結果為真,執行if體
Statement(s);
/*關系、邏輯混合表達式,只要age>=60或age<=10其中一項為真,結果為真,執行if體*/
if (age>=60 ||age<=10)
Statement(s);
if 語句的執行流程:首先判斷關鍵詞 if 後括弧內條件表達式的值,如果該表達式的值為邏輯真(非 0),則執行 if 體,接著執行 if 體後的其他語句;否則,若該表達式的值為邏輯假(0),則不執行該 if 體,直接執行 if 體後的其他語句。
if-else語句
if-else 語句的格式如下。當 if 語句體或 else 語句體中的語句多於一條時,要用 {} 把這些語句括起來形成一條復合語句,如下所示。
if(條件表達式)
{
復合語句A; //if體
}
else
{
復合語句B; //else體
}
當 if 體或 else 體為一條簡單語句時,可以省略 {},即:
if(條件表達式)
簡單語句A;//if體
else
簡單語句B;//else體
同 if 語句一樣,條件表達式可以是關系表達式、邏輯表達式、算術表達式或混合表達式等。
if-else 語句的執行流程:首先判斷關鍵詞if後括弧內條件表達式的值,如果該表達式的值為邏輯真(非 0),則執行 if 體(語句 A),而不執行 else 體(語句 B),然後繼續執行 if-else 之後的其他語句;否則,若該表達式的值為邏輯假(0),則不執行該 if 體(語句 A),而執行 else 體(語句 B),然後繼續執行 if-else 之後的其他語句。
由於表達式的值在邏輯上只有真和假,故 if 和 else 在執行流程上是互斥的,執行且只能執行兩者中的一個。
Ⅶ 存儲過程的if,else怎麼寫
不同的資料庫中,存儲過程中if else 語句寫法有一些差別。
如果是SQLServer資料庫,存儲過程的if, else語句可以這樣寫:
ifa>b
Begin
print'a'
End
Elseifa<b
Begin
print'b'
End
Else
Begin
print'代碼'
End
Oracle 採用下面這種寫法:
IFtestvalue>100THEN
dbms_output.put_line('100+');
ELSIFtestvalue=100THEN
dbms_output.put_line('100');
ELSE
dbms_output.put_line('100-');
ENDIF;
DB2, MYSQL 是下面這種寫法: ( 與 Oracle 區別在於那個 ELSIF )
IFp_val>100THEN
INSERTINTOoutput_debugVALUES('100+');
ELSEIFp_val=100THEN
INSERTINTOoutput_debugVALUES('100');
ELSE
INSERTINTOoutput_debugVALUES('100-');
ENDIF;
Ⅷ 在sqlserver的存儲過程中怎樣使用if-else if
ifa>b
Begin
print'a'
End
Elseifa<b
Begin
print'b'
End
Else
Begin
print'代碼'
End
if-else語法為,最好不要把beginend省略掉。否則,存儲過程比較長可能會報語法錯誤
Ⅸ oracle 存儲過程里的if else
ifS_date=4then
p_temp();
elsifS_date!=4then
p_temp2();
endif;
Ⅹ oracle存儲過程IF判斷問題
問題1:當你傳入37
時,if
flag>5
已經滿足條件了,直接v_value
:=1;,不會繼續判斷了。然後就調到end
if。可以按f9調試,不信一步步看它的執行過程。
問題2:if
v_null=null,不是這樣寫,是if
v_null
is
null
,就會輸出888啦。