請教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
在sqlserver的存儲過程中怎樣使用if-else if
跟程序中使用差不多,if,else if,else,只不過在sqlserver中,{}使用begin和end代替,里面嵌套什么的,都跟程序中寫的差不多,簡單實例如下:
declare @a int
set @a=1
if @a<0
begin
select '小于0'
end
else if @a=0
begin
select '等于0'
end
else
begin
if @a>0 and @a<1
begin
select '大于0小于1'
end
else
begin
select '大于1'
end
end
在簡單看看程序代碼:
int a=1;
if(a<0)
{
輸出小于0;
}
else if(a==0)
{
輸出等于0;
}
else
{
if(a>0&&a<1)
{
輸出大于0小于1;
}
else
{
輸出大于1
}
}
SQl存儲過程 第一一個output參數是字符串的 要如果if語句是真的就返
create proc *C @varfield nvarchar(20) = '' output, @vchProjectName nvarchar(255) ='', @vchComment nvarchar(255) ='', @vchLoginName nvarchar(255) ='', @vchPassword nvarchar(255) =''asset nocount onbegindeclare @iReturn intset @iReturn=1 if @iReturn <> 0 set @varfield = 'OK' elseset @varfield = 'NO'END這樣的達到你要求了嗎?。
存儲過程的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;
sql server存儲過程中怎樣寫if
1
2
3
4
5
6
7
8
9
10
11
12
if a>b
Begin
print 'a'
End
Else if a<b
Begin
print 'b'
End
Else
Begin
print '代碼'
End
if-else語法為,最好不要把begin end省略掉。否則,存儲過程比較長可能會報語法錯誤
關于SQL存儲過程的問題
你的問題是LIKE后面的百分號怎么跟你的變量集合起來對吧?
如果在你的存儲過程中不會出現對傳入參數的操作,那么,吧傳入的參數改為NVARCHAR型,讓傳進來的值本身就帶有%
如果像你后面注釋掉的一樣,要對這些參數進行操作(判斷等),就需要把非字符串類型的數據線變成字符串,在連接就行了,用CONVERT方法
如 WHERE employeeId LIKE '%'+CONVERT(NVARCHAR,@employeeId)+'%'
轉載請注明出處華閱文章網 » sql存儲過程if語句