<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>潘锦的空间 &#187; DELIMITER</title>
	<atom:link href="https://www.phppan.com/tag/delimiter/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.phppan.com</link>
	<description>SaaS SaaS架构 团队管理 技术管理 技术架构 PHP 内核 扩展 项目管理</description>
	<lastBuildDate>Sat, 04 Apr 2026 01:19:58 +0000</lastBuildDate>
	<language>zh-CN</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=3.9.40</generator>
	<item>
		<title>第一次写MySQL存储过程遇到的关于DELIMITER的问题</title>
		<link>https://www.phppan.com/2010/05/mysql-delimit/</link>
		<comments>https://www.phppan.com/2010/05/mysql-delimit/#comments</comments>
		<pubDate>Fri, 07 May 2010 01:18:07 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[DELIMITER]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[存储过程]]></category>

		<guid isPermaLink="false">http://www.phppan.com/?p=683</guid>
		<description><![CDATA[第一次写MySQL存储过程遇到的关于DELIMITER的问题 在很久很久以前写过Oracle的存储过程，昨天由 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>第一次写MySQL存储过程遇到的关于DELIMITER的问题<br />
在很久很久以前写过Oracle的存储过程，昨天由于某些特殊的原因导致需要在MySQL中写一些存储过程，只能现学现用了<br />
首先写了一个非常简单的存储过程，但是就是如此简单的过程也报错了，其代码如下：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="sql" style="font-family:monospace;">&nbsp;
<span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">PROCEDURE</span> test<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #993333; font-weight: bold;">BEGIN</span>
    <span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #ff0000;">'Hello Word!'</span>;                                                               
<span style="color: #993333; font-weight: bold;">END</span></pre></td></tr></table></div>

<p>在phpmyadmin及客户端都报错，在phpmyadmin中显示：#1064 &#8211; 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 &#8221; at line 3<br />
<br />
显然，程序在第一个分号后面出错了<br />
原因不明，遂google之，找到如下地址：<a href="http://www.cnblogs.com/hsqzzzl/archive/2008/02/21/1076646.html">http://www.cnblogs.com/hsqzzzl/archive/2008/02/21/1076646.html</a><br />
文章作者有说：分隔符是通知MySQL客户端已经输入完成的符号。一直都是用“;”，但是在存储过程中不行，因为存储过程中很多语句都需要用到分号<br />
于是得到如下所示代码</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="sql" style="font-family:monospace;">DELIMITER <span style="color: #66cc66;">||</span>
<span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">PROCEDURE</span> test<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #993333; font-weight: bold;">BEGIN</span>
    <span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #ff0000;">'Hello Word!'</span>;                              
<span style="color: #993333; font-weight: bold;">END</span> <span style="color: #66cc66;">||</span>
DELIMITER ;</pre></td></tr></table></div>

<p>如果不想使用DELIMITER，在phpmyadmin中执行命令时，在Delimiter文本框中填写||<br />
<br />
另在百度百科中有说明：http://baike.baidu.com/view/3068266.htm<br />
MySQL中delimit命令。<br />
　　这个命令与存储过程没什么关系。<br />
　　其实就是告诉mysql解释器，该段命令是否已经结束了，mysql是否可以执行了。<br />
　　即改变输入结束符。<br />
　　默认情况下，delimiter是分号“;”。<br />
　　在命令行客户端中，如果有一行命令以分号结束，<br />
　　那么回车后，mysql将会执行该命令。<br />
　　但有时候，不希望MySQL这么做。因为可能输入较多的语句，且语句中包含有分号。<br />
　　默认情况下，不可能等到用户把这些语句全部输入完之后，再执行整段语句。<br />
　　因为mysql一遇到分号，它就要自动执行。<br />
　　这种情况下，就可以使用delimiter，把delimiter后面换成其它符号，如//或$$。<br />
　　此时，delimiter作用就是对整个小段语句做一个简单的封装。<br />
　　此命令多用在定义子程序，触发程序等musql自己内嵌小程序中。</p>
]]></content:encoded>
			<wfw:commentRss>https://www.phppan.com/2010/05/mysql-delimit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
