這篇文章為大家帶來了關於mysql的相關知識,主要介紹了MySQL預存程序參數的用法及說明,MySQL預存程序的參數共有三種:IN、OUT 、INOUT,下面一起來看一下,希望對大家有幫助。
推薦學習:mysql影片教學
MySQL預存程序的參數共有三種:
IN
OUT
# INOUT
#輸入參數
輸入參數(IN):在呼叫儲存過程中傳遞資料給預存程序的參數(在呼叫的預存程序必須具有實際值的變數或字面值)
細節注意:下面的預存程序建立會報錯,他的
類型以及類型長度需要和建立表格欄位的類型和類型長度一致
-- 创建一个存储过程:添加一个员工信息 DELIMITER $$ CREATE PROCEDURE procedure_test4(IN `p_name` VARCHAR,IN `p_call` VARCHAR) BEGIN INSERT INTO employees(`name`,`call`) VALUES(`p_name`,`p_call`); END $$
正確寫法
-- 创建一个存储过程:添加一个员工信息 DELIMITER $$ CREATE PROCEDURE procedure_test4(IN `p_name` VARCHAR(64),IN `p_call` VARCHAR(64)) BEGIN INSERT INTO employees(`name`,`call`) VALUES(`p_name`,`p_call`); END $$
現在來測試一下是否可以調用預存程序並且添加資料進去
CALL procedure_test4('李四','321321')
輸出參數(OUT):
將儲存過程中產生的資料傳回給呼叫者,相當於Java方法的回傳值,但不同的是一個預存程序可以有多個輸出參數範例:
-- 创建一个存储过程:根据id查询出该员工姓名 DELIMITER $$ CREATE PROCEDURE procedure_test5(IN `p_id` INT(64),OUT `p_name` VARCHAR(64)) BEGIN SELECT `name` INTO `p_name` FROM employees WHERE id=`p_id`; END $$
SET @e_name='' CALL procedure_test5('2',@e_name) SELECT @e_name FROM DUAL### #########輸入輸出參數(INOUT)###
-- INOUT(输入输出参数) DELIMITER $$ CREATE PROCEDURE procedure_test6(INOUT str VARCHAR(64)) BEGIN -- 把你传进来的值作为条件,查询出的结果再重新赋值给 str 返回出去 -- 这里的 str 既当输入参数,也当输出参数 SELECT `name` INTO str FROM employees WHERE id=str; END $$#############建立沒問題,接下來測試一下###
SET @e_name='2' CALL procedure_test6(@e_name) SELECT @e_name FROM DUAL####### #####也是沒問題的,但在實際開發中INOUT 建議少用,原因:程式碼的可讀性會變差######推薦學習:###mysql影片教學##### #
以上是歸納整理MySQL預存程序參數的用法及說明的詳細內容。更多資訊請關注PHP中文網其他相關文章!