日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

c mysql存储过程 out_MySQL存储过程带in和out参数

發布時間:2025/3/15 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c mysql存储过程 out_MySQL存储过程带in和out参数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

實例一:無參的存儲過程 復制代碼 代碼如下: $conn = mysql_connect('localhost','root','root') or die ("數據連接錯誤!!!"); mysql_select_db('test',$conn); $sql = " create procedure myproce() begin INSERT INTO user (id, username, sex) VALUES (NUL

MySQL支持IN(傳遞給存儲過程)、OUT(從存儲過程傳出)、INOUT(對存儲過程傳入和傳出) 所有MySQL變量必須以@開始! ? 最簡單的例子:[html]

mysql> DELIMITER $$ //用delimiter命令來把語句定界符從 ;變為//。這樣就允許在程序體用;定界符傳遞到服務器,而不是被mysql自己來解釋。

mysql> USE test $$

Databasechanged

mysql>DROPPROCEDUREIF EXISTS `sp_add`$$

Query OK, 0 rowsaffected (0.00 sec)

mysql>CREATEPROCEDUREsp_add(a INT, b INT,OUTcINT)

->BEGIN

->SETc=a+ b;

->END$$

Query OK, 0 rowsaffected (0.00 sec)

mysql> DELIMITER ;

mysql> CALL sp_add (1,2,@c);

Query OK, 0 rowsaffected (0.00 sec)

mysql> SELECT@c;

+------+

| @c |

+------+

| 3 |

+------+

1 row inset(0.00 sec)

一個稍微復雜的例子:

mysql> show createtablet_BillNo;

+----------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

|Table |CreateTable |

+----------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

| t_BillNo | CREATETABLE`t_billno` (

`SaleNo`bigint(20)DEFAULTNULL,

`bmh`varchar(20)DEFAULTNULL

) ENGINE=InnoDB DEFAULTCHARSET=utf8 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC|

+----------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

1 row inset(0.00 sec)

mysql>select*fromt_BillNo;

+--------+------+

| SaleNo | bmh |

+--------+------+

| 1 | 2 |

| 4 | 3 |

| 4 | 5 |

| 7 | 7 |

| 12 | 8 |

+--------+------+

5rowsinset (0.00 sec)

mysql>

mysql> DELIMITER $$

mysql> USE test $$

Databasechanged

mysql>DROPPROCEDUREIF EXISTS `sp_GetMaxNumber`$$

Query OK, 0 rowsaffected (0.01 sec)

DELIMITER $$

USE test $$

DROPPROCEDUREIF EXISTS `sp_GetMaxNumber`$$

CREATEPROCEDUREsp_GetMaxNumber (INv_bmhVARCHAR(6),OUTv_MaxNoINT)

BEGIN

STARTTRANSACTION;

UPDATEt_BillNo

SETSaleNo = IFNULL(SaleNo,0)+1

WHEREbmh = v_bmh;

IF @@error_count = 0 THEN

BEGIN

SELECTSalenoINTOv_MaxNoFROMt_BillNoWHEREbmh = v_bmh;

COMMIT;

END;

ELSE

BEGIN

ROLLBACK;

SETv_MaxNo = 0;

END;

ENDIF;

END$$

DELIMITER ;

mysql>CREATEPROCEDUREsp_GetMaxNumber (INv_bmhVARCHAR(6),OUTv_MaxNoINT)

->BEGIN

-> START TRANSACTION;

->UPDATEt_BillNo

->SETSaleNo = IFNULL(SaleNo,0)+1

->WHEREbmh = v_bmh;

-> IF @@error_count = 0 THEN

->BEGIN

-> SELECTSalenoINTOv_MaxNoFROMt_BillNoWHEREbmh = v_bmh;

->COMMIT;

->END;

->ELSE

->BEGIN

-> ROLLBACK;

-> SETv_MaxNo = 0;

->END;

->ENDIF;

->END$$

Query OK, 0 rowsaffected (0.00 sec)

mysql> DELIMITER ;

mysql>

mysql> call sp_GetMaxNumber(8,@v_MaxNo);

Query OK, 0 rowsaffected (0.00 sec)

mysql>select@v_MaxNo;

+----------+

| @v_MaxNo |

+----------+

| 12 |

+----------+

1 row inset(0.00 sec)

?

總結

以上是生活随笔為你收集整理的c mysql存储过程 out_MySQL存储过程带in和out参数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。