MySQL中的IN、OUT、INOUT類型


MySQL中,存儲過程的參數類型IN、OUT、INOUT,但是函數的參數只能是IN類型的。

1、IN類型

使用IN類型來傳遞信息,存儲過程內部可以對參數的值進行修改,但是修改后的值調用者不可見。

create procedure pr_demo_in(in id int)
begin
    if (id is not null)then set id = id + 1;
    end if;
    select id as output_id;
end

/** 測試 **/
set @id = 1;
call pr_demo_in(@id);  /** 運行結果output_id = 2  **/
select @id as output_id;  /** 運行結果output_id = 1  **/

可以看出雖然設置了變量id的值為1,但是在存儲過程內部修改了id的值為2,id的值並未返回給調用者。

2、OUT類型

使用OUT類型來傳遞信息,在存儲過程內部,該值的默認值為NULL,無論調用者是否傳值給存儲過程。

create procedure pr_demo_out(out id int)
begin
    if (id is not null)then set id = id + 1;
    end if;
    select id as output_id;
end

/** 測試 **/
set @id = 10;
call pr_demo_out(@id); /** 運行結果output_id為null  **/
select @id as output_id; /** 運行結果output_id為null **/

可以看出雖然設置了變量id的值為10,但是在存儲過程內部id的值為null,最后id的值在存儲過程內修改后返回調用者。

2、INOUT類型

使用IN類型來傳遞信息,存儲過程內部可以對參數的值進行修改,並將最終值返回給調用者。

create procedure pr_demo_inout(inout id int)
begin
    if (id is not null)then set id = id + 1;
    end if;
    select id as output_id;
end

/** 測試 **/
set @id = 1;
call pr_demo_inout(@id); /** 運行結果output_id = 2  **/
select @id as output_id; /** 運行結果output_id = 2  **/

以看出設置了變量id的值為2,在存儲內部將id的值修改為2,最后id的值返回給調用者。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM