最近写一些mysql的存储过程和函数,发现网上比较有价值的文档很少,大都是照着手册上抄来的,有些实际问题解决不了,比如用变量作表名。 经过反复调试,总算找到解决办法,一下是一些简单的记录,比较零碎。部分内容转自http://my.opera.com/Dereky/blog/show

Golang MySQL存储过程的使用

使用前阅读

编辑文件src/github.com/go-sql-driver/mysql/packets.go文件,在函数writeAuthPacket(cipher []byte) (大约在210行)的客户端标志位处添加下面两个标志:

func (mc *mysqlConn) writeAuthPacket(cipher []byte) error {

// Adjust client flags based on server support

clientFlags := clientProtocol41 |

clientSecureConn |

clientLongPassword |

clientTransactions |

clientLocalFiles |

**clientMultiStatements | // 添加这行

clientMultiResults |** //再添加这行

mc.flags&clientLongFlag

if mc.cfg.clientFoundRows {

clientFlags |= clientFoundRows

}

一、MySQL创建存储过程

-- 单行执行以下语句

SET NAMES utf8;