存儲過程 if語句的使用
create proc sp_test
as
declare @_value int
select top 1 @_value = rrrid from readerinfo where readerid='s001'
if @value = 0
begin
update readerinfo set rrrid=20 where readerid='s001'
end
else
begin
update readerinfo set rrrid=0 where readerid='s001'
end
execute 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;
CREATE PROCEDURE F_GMACT_IPAdd
--創建一個名為F_GMACT_IPAdd的存儲過程
@F_USERNAME NCHAR(20),
@F_IP VARCHAR(20),
@CODE INT OUTPUT --輸出值 1,插入成功 2 插入失敗
--設定三個參數,其中@CODE為輸出參數
AS begin
IF NOT EXISTS (SELECT F_IP FROM F_GMACT_IPAdd WHERE F_USERNAME=@F_USERNAME and F_IP=@F_IP)
--判斷F_GMACT_IPAdd表中是否存在要插入的數據
begin
set @CODE=1
--設定輸出參數的值(返回值)為成功
insert into f_gmactiveip(f_username,f_ip,f_activeflag)
values (@f_USERNAME,@f_IP,1)
--執行插入語句
end
else
--如果已經存在要插入的數據
begin
set @code=2
--設定輸出參數的值(返回值)為插入失敗
end
end
-------執行------
declare @CODE int
set @CODE = 2EXEC [dbo].[F_GMACT_IPAdd] @F_USERNAME = N'1', @F_IP = N'2', @CODE = @CODE OUTPUT
SELECT @CODE as N'@CODE'
轉載請注明出處華閱文章網 » 存儲過程if語句and