【紧急提问】:MySql存储过程脚本中含有预处理语句时,不能执行_MySQL
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了【紧急提问】:MySql存储过程脚本中含有预处理语句时,不能执行_MySQL,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1636字,纯文字阅读大概需要3分钟。
内容图文
![【紧急提问】:MySql存储过程脚本中含有预处理语句时,不能执行_MySQL](/upload/InfoBanner/zyjiaocheng/572/479d46cd21484c83b966d914dd7c2a5a.jpg)
## 不含预处理的存储过程
## 存储过程 CustomCount.sql : 取各个表的记录数
Drop Procedure If Exists CustomCount;
Create Procedure CustomCount
(
out RowNum bigint
)
Not Deterministic
SQL Security Definer
Comment ''
Begin
Select Count(*) Into RowNum From uc_members;
End;
------------------------------------------------------------------------
## 含预处理的存储过程
## 存储过程GetCount.sql: 传入表名,取某个表的记录数 Drop Procedure If Exists GetCount;
Create Procedure GetCount
(
TableName varchar(100)
, out RowNum bigint
)
Not Deterministic
SQL Security Definer
Comment ''
Begin
Declare SQLStr varchar(2000) default '';
Set SQLStr = Concat('Select Count(*) Into @MyNum From ', TableName);
Set @ResultSQL = SQLStr;
Prepare preSQL From @ResultSQL;
Execute PreSQL;
Deallocate Prepare preSQL;
Set RowNum = @MyNum;
End;
-------------------------------------------------------------------------
上述两个存储过程脚本,在C#中读取文件内容后,运行,含预处理的存储过程执行失败。是什么原因呢??
附件是 .NET Framework 4.0的WinForm运行脚本源码示例,含这两个存储过程。
请修改您的MySql连接字符串即可。
CustomCount.sql中的uc_members表名变可改成您的表名。
点此下载
备注:
1. 制作Web安装包时,需要用程序运行MySql脚本,而这些脚本中,经常含有 预处理脚本。
2. 使用这个预处理脚本主要是为了 在动态执行SQL 时取得输出参数的值(类似GetCount.sql中取值)。
3. 不要建议说,使用mysql.exe这个命令一个一个的运行,或者说是调用其它 MySql的.dll或.exe这种方式,因为Web安装时,经常是没有权限取得本地文件的执行权限的。
4. 主要是需要在虚拟主机下进行Web安装。
谢谢。
bitsCN.com
内容总结
以上是互联网集市为您收集整理的【紧急提问】:MySql存储过程脚本中含有预处理语句时,不能执行_MySQL全部内容,希望文章能够帮你解决【紧急提问】:MySql存储过程脚本中含有预处理语句时,不能执行_MySQL所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。