mysql 文档翻译工程师_mysqlscript文档翻译

根据自己的需要有选择的翻译官方文档

根据sql脚本的内容,你需要控制脚本的分隔符。一个最常见的例子是当你在存储过程中有一个多语句的过程,

使用默认的;分隔符,执行时就会报错(我就遇到了这个错误)

比如,以下的存储过程:

CREATE PROCEDURE test_routine()

BEGIN

SELECT name FROM TestTable ORDER BY name;

SELECT COUNT(name) FROM TestTable;

END

这个过程实际上执行的时候是一个语句,然而 ,如果用;分隔符,sqlscript就会认为它是两个语句,

第一个语句是

CREATE PROCEDURE test_routine()

BEGIN

SELECT name FROM TestTable ORDER BY name;

执行时会报语法错误,为了解决这个问题mysqlscript支持使用不同的分隔符通过使用delimiter属性。

比如,你可以设置delimiter为“??”,这样,上面的语句就不会报错。

以下是官网的例子:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using MySql.Data;

using MySql.Data.MySqlClient;

namespace ConsoleApplication8

{

class Program

{

static void Main(string[] args)

{

string connStr = "server=localhost;user=root;database=TestDB;port=3306;password=******;";

MySqlConnection conn = new MySqlConnection(connStr);

try

{

Console.WriteLine("Connecting to MySQL...");

conn.Open();

string sql = "DROP PROCEDURE IF EXISTS test_routine??" +

"CREATE PROCEDURE test_routine() " +

"BEGIN " +

"SELECT name FROM TestTable ORDER BY name;" +

"SELECT COUNT(name) FROM TestTable;" +

"END??" +

"CALL test_routine()";

MySqlScript script = new MySqlScript(conn);

script.Query = sql;

script.Delimiter = "??";

int count = script.Execute();

Console.WriteLine("Executed " + count + " statement(s)");

script.Delimiter = ";";

Console.WriteLine("Delimiter: " + script.Delimiter);

Console.WriteLine("Query: " + script.Query);

}

catch (Exception ex)

{

Console.WriteLine(ex.ToString());

}

conn.Close();

Console.WriteLine("Done.");

}

}

}

以下是个人的理解:

当使用到mysqlscript时,可以直接在sql文件里这样写

DELIMITER ??

........

BEGIN

....

END??

DELIMITER ;

也是一种解决办法

在实际使用中sql脚本文件可能会比较长,情况复杂,具体使用时,mysqlscript可能不够灵活,需要重写,或者不用mysqlscript

自己处理文件,自己执行。因为mysqlscript遇到错误就会停止执行,没有更丰富的选项以及日志功能,所以可能还是需要自己来操作

sql文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值