gpt4 book ai didi

c# - 使用 C# 在 MySQL 中创建存储过程

转载 作者:行者123 更新时间:2023-11-29 04:09:06 24 4
gpt4 key购买 nike

我正在尝试使用以下代码以编程方式创建一个新的存储过程:

using (MySqlConnection conn = new MySqlConnection(connectionString))
{
conn.Open();

using (MySqlTransaction trans = conn.BeginTransaction())
{
using (MySqlCommand command = conn.CreateCommand())
{
command.CommandText = query;

command.ExecuteNonQuery();
}

trans.Commit();
}
}

以下文本作为从 Mysql workbench 复制的 create 语句:

static string query = @"
delimiter $$

CREATE PROCEDURE `GetParentIds`(IN `tempTableName` VARCHAR(255), IN `id` int)
BEGIN
DECLARE parId INT;
DECLARE curId INT;

DROP TEMPORARY TABLE IF EXISTS tempTableName;

CREATE TEMPORARY TABLE tempTableName (
node_id INT NOT NULL PRIMARY KEY
);

set curId := id;
get_parents_loop: LOOP
set parId := null;

set parId = (select ParentID from {TableName} where ID = curId);

IF parId is NULL THEN
LEAVE get_parents_loop;
END IF;

INSERT INTO tempTableName(node_id) Values (parId);
set curId := parId;

END LOOP get_parents_loop;
SELECT *
FROM tempTableName;
END$$";

此过程传递一个对象的 ID,该对象具有 parentID,它获取给定对象的所有父对象的所有 parentID 并返回它们。当我尝试运行它并收到以下消息时,问题就来了:“您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本对应的手册,以了解在 'delimiter $$

附近使用的正确语法

CREATE PROCEDURE GetParentIds(IN tempTableName VARCHAR(255),' at line 1"

欢迎任何想法!

* 编辑 **感谢以下所有答案,这终于奏效了:

CREATE PROCEDURE GetParentIds(IN tempTableName VARCHAR(255), IN id int)
BEGIN
DECLARE parId INT;
DECLARE curId INT;

DROP TEMPORARY TABLE IF EXISTS tempTableName;

CREATE TEMPORARY TABLE tempTableName (node_id INT NOT NULL PRIMARY KEY );

set curId := id;
get_parents_loop: LOOP
set parId := null;

set parId = (select ParentID from TDOs where TDOID = curId);

IF parId is NULL THEN
LEAVE get_parents_loop;
END IF;

INSERT INTO tempTableName(node_id) Values (parId);
set curId := parId;

END LOOP get_parents_loop;
SELECT *
FROM tempTableName;
END;

最佳答案

删除开头的 DELIMITER $$ 和最后一个 END 之后的 $$

DELIMITER 是一个 mysql 客户端命令,可让您在定义存储例程时临时更改其语句终止符。

如果您从不使用分号作为语句终止符的编程接口(interface)中定义存储例程,则存储例程定义中的分号不会出现任何特殊问题。

关于c# - 使用 C# 在 MySQL 中创建存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18138041/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com