簡體   English   中英

在 MySQL 上創建存儲過程

[英]Creating stored procedure on MySQL

我正在嘗試運行下面的查詢,該查詢存儲在.sql文件中,然后使用ioutils.ReadFile讀取並在初始化時執行

CREATE TABLE IF NOT EXISTS districts
(
    GeoCode integer PRIMARY KEY,
    name    varchar(32)
);

drop procedure if exists insert_district;

DELIMITER $$

CREATE PROCEDURE insert_district(in pgeocode int, in pname varchar(32))
BEGIN
    INSERT INTO districts(geocode, name) VALUES (pgeocode, pname);
    SELECT * FROM districts where geocode = pgeocode;
END$$
DELIMITER ;

我正在使用 database/sql 包並使用Exec運行查詢

Error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'drop procedure if exists insert_district;

DELIMITER $$

CREATE PROCEDURE insert' at line 7

據我所知,我的語法是正確的,我對其進行了測試,所以我無法弄清楚為什么不能從程序中正確運行相同的查詢。

Go MySQL 客戶端默認不支持多條 SQL 語句。 你不能只給它一個文本文件; 分開的陳述。

請參閱是否存在支持單個字符串中的多個語句的 Go Mysql 驅動程序? 有關詳細信息 - 您可以使用一個選項來允許多語句。

但這仍然不支持像DELIMITER這樣不被 MySQL 服務器識別的語句。 那是一個mysql 客戶端命令

您有兩種選擇:

  • 解析 .sql 文件以查找語句終止符並一次運行一個語句。
  • 使用 .sql 文件作為輸入在子進程中執行mysql客戶端。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM