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

MYSQL
SQL Server数据库对上亿表的操作
MyISAM和InnoDB的异同
带你轻松的接触用于Mysql元数据的UTF8
校对确定 较为复杂的一些特殊情况
带你轻松接触Mysql校对效果的示例
快速的掌握MySQL支持的操作系统
教你快速掌握Mysql ENUM和SET约束
MaxDB和MySQL之间的特性差异
带你轻松接触Mysql事务和原子操作
怎样在ANSI模式下运行MySQL
怎样使MySQL在攻击者面前保持安全
mysql_data_seek函数详解
如何解决MYSQL不能自动启动的问题
MySQL5.1新特性 日志的增强
一个实例讲解MySQL查询优化
MySQL_常用查询的例子
学习使用数据库MySQL
管理控制:MYSQL数据库常用命令列表
让新装上的MYSQL数据库更加安全
初学者必读 MySQL数据库常见问题汇总

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 70 ::
收藏到网摘: 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