1. 程式人生 > >mysql 內置功能 存儲過程 創建無參存儲過程

mysql 內置功能 存儲過程 創建無參存儲過程

conn code tid close gin -s har from mit

操作哪個數據庫,就把存儲過程建到那個數據庫

例如 現在use db2;

應該把存儲過程 建立到db2數據庫裏

創建無參存儲過程

delimiter // # 設置mysql結束符合為//
create procedure p1() # 創建程序固定procedure 和p1是存儲過程名字
BEGIN
    select * from db2.teacher;  # sql語句
end //
delimiter ;

查看創建的存儲過程

mysql> show create procedure p1\G;
***************************
1. row *************************** Procedure: p1 sql_mode: STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION Create Procedure: CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`() BEGIN select * from db2.teacher; end character_set_client: utf8 collation_connection: utf8_general_ci
Database Collation: utf8_general_ci 1 row in set (0.00 sec) ERROR: No query specified

調用存儲過程

#在mysql中調用
call 存儲過程名字;

mysql> call p1();
+-----+-----------------+
| tid | tname           |
+-----+-----------------+
|   1 | 張磊老師        |
|   2 | 李平老師        |
|   3 | 劉海燕老師      |
|
4 | 朱雲海老師 | +-----+-----------------+ 5 rows in set (0.18 sec) Query OK, 0 rows affected (0.18 sec)

#在python中基於pymysql調用

調用存儲過程 callproc(‘‘) 裏面是存儲過程名字

cursor.callproc(p1) 
print(cursor.fetchall())

import pymysql



mysql_host = 192.168.0.108
port = 3306
mysql_user = root
mysql_pwd = 123
encoding = utf8

# 建立 連接mysql服務端

conn = pymysql.connect(
    host=mysql_host,  # mysql服務端ip
    port=port,  # mysql端口
    user=mysql_user,  # mysql 賬號
    password=mysql_pwd,  # mysql服務端密碼
    db=db2,  # 操作的庫
    charset=encoding  # 讀取字符串編碼

)

# 拿到遊標對象
cur = conn.cursor(pymysql.cursors.DictCursor)

‘‘‘
遊標是給mysql提交命令的接口
mysql> 
把sql語句傳遞到這裏
‘‘‘


# 執行sql語句
cur.callproc(p1)
# 打印查詢結果
print(cur.fetchall())



# 執行完sql語句要關閉遊標和mysql連接
cur.close()
conn.close()

‘‘‘
[{‘tid‘: 1, ‘tname‘: ‘張磊老師‘}, 
{‘tid‘: 2, ‘tname‘: ‘李平老師‘}, 
{‘tid‘: 3, ‘tname‘: ‘劉海燕老師‘}, 
{‘tid‘: 4, ‘tname‘: ‘朱雲海老師‘}]
‘‘‘

mysql 內置功能 存儲過程 創建無參存儲過程