当前位置: 首页 > 图文教程 > 数据库 > MYSQL > SQL存储过程和触发不能使用USE的应对方法

MYSQL
MySQL字段类型详解
MySQL安全问题的一点心得
Linux下通过C++语言代码来操作MySQL数据库
Mysql常用命令行大全
保护MySQL数据库中重要数据的注意事项
Jsp连接Mysql数据库:利用Servlet监听器
提高MySQL数据库查询效率的几个技巧
精细分析 SQL server服务器的内存配置
如何选择合适的MySQL存储引擎
如何对MySQL数据库日志文件进行维护
如何进行MySQL数据库表的故障检测
如何对MySQL数据库表进行锁定
Navicat for MySQL 与 MySQL-Front比较
DBA经验:如何进行MySQL数据库表的故障检测
小谈MySQL字符集
mysql数据库下损坏数据的恢复操作其过程总结
MySQL如何查询当前正在运行的SQL语句
MySQL数据库的临时文件究竟储存在哪里
用MySQL内建复制功能来优化可用性
使用ODBC接口访问MySQL

MYSQL 中的 SQL存储过程和触发不能使用USE的应对方法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 96 ::
收藏到网摘: n/a

大家都知道在SQL的存储过程,触发中不能使用USE。

怎么办呢,当然可以直接用[databasename].[user].[tablename]这样来访问,但是某些语句必须在当前数据库下执行,比

如sp_adduser等。

之前看到一篇文章,我测试了有问题。

原文:

这里提供一个解决方案:

使用Exec(ute)语句来改变当前数据库,不过要注意的是,数据库环境的更改只在Execute语句结束前有效,所以你必须把

后面的语句和Execute放到一起。Example:

我自己试了一下,根据下面的语句执行没有问题:

使用Exec(ute)语句来改变当前数据库。

如下:

CREATE PROCEDURE cs

AS

以下为引用的内容:

BEGIN

exec('use sjdbmis; select plucode from txtplu')

END

GO

又如:

以下为引用的内容:

CREATE PROCEDURE cs

AS

BEGIN

exec('use sjdbmis; exec sp_adduser ''test''')

END

GO