當前位置:首頁 » 存儲配置 » mysql存儲過程多個參數

mysql存儲過程多個參數

發布時間: 2022-09-26 14:59:10

Ⅰ mysql存儲過程能不能輸入多個參數的 如果能。。請給一個例子。謝謝

mysql> DELIMITER //
mysql> CREATE PROCEDURE HelloWorld2(
-> IN vUserName VARCHAR(10),
-> OUT vOutValue VARCHAR(10),
-> INOUT vInOutValue VARCHAR(10))
-> BEGIN
-> SELECT CONCAT('Hello ', vUserName);
-> SET vOutValue = 'A';
-> SET vInOutValue = 'B';
-> END//
Query OK, 0 rows affected (0.00 sec)

mysql> call HelloWorld2('Edward', @a, @b)//
+-----------------------------+
| CONCAT('Hello ', vUserName) |
+-----------------------------+
| Hello Edward |
+-----------------------------+
1 row in set (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

mysql> select @a//
+------+
| @a |
+------+
| A |
+------+
1 row in set (0.00 sec)

mysql> select @b//
+------+
| @b |
+------+
| B |
+------+
1 row in set (0.00 sec)

Ⅱ mysql 存儲過程

.關於MySQL的存儲過程

存儲過程是資料庫存儲的一個重要的功能,但是MySQL在5.0以前並不支持存儲過程,這使得MySQL在應用上大打折扣。好在MySQL 5.0終於開始已經支持存儲過程,這樣即可以大大提高資料庫的處理速度,同時也可以提高資料庫編程的靈活性。

MySQL存儲過程的創建

(1).格式

MySQL存儲過程創建的格式:CREATE PROCEDURE過程名([過程參數[,...]])
[特性...]過程體

這里先舉個例子:

  • mysql>DELIMITER//

  • mysql>CREATEPROCEDUREproc1(OUTsint)

  • ->BEGIN

  • ->SELECTCOUNT(*)INTOsFROMuser;

  • ->END

  • ->//

  • mysql>DELIMITER;


  • 註:
  • (1)這里需要注意的是DELIMITER //和DELIMITER ;兩句,DELIMITER是分割符的意思,因為MySQL默認以";"為分隔符,如果我們沒有聲明分割符,那麼編譯器會把存儲過程當成SQL語句進行處理,則存儲過程的編譯過程會報錯,所以要事先用DELIMITER關鍵字申明當前段分隔符,這樣MySQL才會將";"當做存儲過程中的代碼,不會執行這些代碼,用完了之後要把分隔符還原。

    (2)存儲過程根據需要可能會有輸入、輸出、輸入輸出參數,這里有一個輸出參數s,類型是int型,如果有多個參數用","分割開。

    (3)過程體的開始與結束使用BEGIN與END進行標識。

Ⅲ mysql存儲過程傳多個參數,但並不是所有參數全輸入,這要怎麼寫,

mysql> DELIMITER //
mysql> CREATE PROCEDURE HelloWorld2(
-> IN vUserName VARCHAR(10),
-> OUT vOutValue VARCHAR(10),
-> INOUT vInOutValue VARCHAR(10))
-> BEGIN
-> SELECT CONCAT('Hello ', vUserName);
-> SET vOutValue = 'A';
-> SET vInOutValue = 'B';
-> END//
Query OK, 0 rows affected (0.00 sec)

mysql> call HelloWorld2('Edward', @a, @b)//
+-----------------------------+
| CONCAT('Hello ', vUserName) |

php 調用mysql存儲過程 輸入多個參數,出參只需一個如何寫

以下只是個例子
CREATE procere test
@n1 char(10),
@n2 char(10),
@n3 char(10),
@n4 char(10),
@n5 char(10),
@n6 char(10),
@n7 char(10),
@n8 datetime,
@n9 datetime,
@n10 int

as
select * --------這部分請將傳入的參數帶入查詢的條件中
from table1 t1,table2 t2,table3 t3
where deldate between @n8 and @n9
and t1.ponum = t2.ponum
and t2.partnum = t3.partnum
and t3.layer =@n1

GO

Ⅳ mysql存儲過程

MySQL存儲過程創建的格式如下:
CREATE PROCEDURE 過程名 ([過程參數[,...]])[特性 ...] 過程體
舉例代碼如下:

CREATE PROCEDURE proc1(OUT s int) BEGIN SELECT COUNT(*) INTO s FROM user; END

存儲過程根據需要可能會有輸入、輸出、輸入輸出參數,這里有一個輸出參數s,類型是int型,如果有多個參數用","分割開。
過程體的開始與結束使用BEGIN與END進行標識。
注意:MySQL在5.0以前並不支持存儲過程

Ⅵ mysql存儲過程中in傳的變數有多個

於在mysql的存儲過程中,實現類似where id in(1,2,3,...)的功能,有興趣的朋友參考學習下。
sql語句:

復制代碼代碼示例:
select * from table_name t where t.field1 in (1,2,3,4,...);
當在寫存儲過程in中的列表用個傳入參數代入時,可以使用如下的方式。
以下代碼使用find_in_set函數:

復制代碼代碼示例:
select * from table_name t where find_in_set(t.field1,'1,2,3,4');
另外一個廣場,就是組裝字元串,然後執行:

復制代碼代碼示例:
DROP PROCEDURE IF EXISTS photography.Proc_Test;
CREATE PROCEDURE photography.`Proc_Test`(param1 varchar(1000))
BEGIN
set @id = param1;
set @sel = 'select * from access_record t where t.ID in (';
set @sel_2 = ')';
set @sentence = concat(@sel,@id,@sel_2); -- 連接字元串生成要執行的SQL語句
prepare stmt from @sentence; -- 預編釋一下。 「stmt」預編釋變數的名稱,
execute stmt; -- 執行SQL語句
deallocate prepare stmt; -- 釋放

Ⅶ mysql 存儲過程參數

MySQL 存儲過程, 定義參數, 不需要加那個 @


例子代碼如下:


mysql> DELIMITER //
mysql> CREATE PROCEDURE HelloWorld1(vUserName VARCHAR(10))
-> BEGIN
-> SELECT CONCAT('Hello ', vUserName);
-> END//
Query OK, 0 rows affected (0.00 sec)
mysql> call HelloWorld1('Edward');
-> //
+-----------------------------+
| CONCAT('Hello ', vUserName) |
+-----------------------------+
| Hello Edward |
+-----------------------------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.02 sec)

Ⅷ mysql 存儲過程參數問題

表名是不可以直接用變數,你可以多看看 PREPARE用法。
eg:
DROP PROCEDURE IF EXISTS `table`;
DELIMITER //
CREATE PROCEDURE `table`(IN tname varchar(64))
BEGIN
SET @sqlcmd = CONCAT('SELECT count(1) FROM ', tname);
PREPARE stmt FROM @sqlcmd;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END//
DELIMITER ;
call table('test');

Ⅸ mysql 存儲過程 傳多個參數無法識別

存儲過程里的遞歸調用傳的是一個參數,這肯定不對
while(done = 0) do
call iterateCategory(b);
fetch c into b;
end while;

Ⅹ Mysql存儲過程的多參數問題

書寫插入語句出錯,欄位附在表後,values後接真實數據

insert into student values(id,name,chinese,english,math);

熱點內容
單機江湖腳本 發布:2025-04-05 10:08:32 瀏覽:760
愛奇藝離線緩存怎麼傳藍牙 發布:2025-04-05 10:00:48 瀏覽:138
阿里雲伺服器內存超頻 發布:2025-04-05 10:00:48 瀏覽:574
如何登錄pubg國際服安卓手機 發布:2025-04-05 09:40:07 瀏覽:412
javafor表達式 發布:2025-04-05 09:22:22 瀏覽:868
可逆的加密演算法 發布:2025-04-05 09:22:22 瀏覽:495
我的世界怎麼讓別人進我的伺服器 發布:2025-04-05 09:11:59 瀏覽:800
iphone手機怎麼玩安卓的游戲賬號 發布:2025-04-05 09:09:49 瀏覽:713
存儲過程編程 發布:2025-04-05 09:09:13 瀏覽:138
qq相冊加密如何打開 發布:2025-04-05 08:59:09 瀏覽:679