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

MYSQL
MySQL忘记密码恢复密码的实现方法
mysql 时间转换函数的使用方法
使用mysql的disctinct group by查询不重复记录
mysql备份恢复mysqldump.exe几个常用用例
超详细mysql left join,right join,inner join用法分析
mysql 5.0.67最新版替代MySQL 5.0.51b版本官方下载
比较详细的MySQL字段类型说明
mysql 记录不存在时插入 记录存在则更新的实现方法
MYSQL基础之连接MYSQL、修改密码、添加用户
mysql数据库优化必会的几个参数中文解释
mysql中文排序注意事项与实现方法
MySQL 5.0触发器参考教程
MySQL5创建存储过程的示例
MYSQL5 masterslave数据同步配置方法
mysql数据库导出xml的实现方法
MySql增加用户、授权、修改密码等语句
Mysql默认设置的危险性分析
用MySQL创建数据库和数据库表代码
Mysql如何避免全表扫描的方法
mysql的校对规则引起的问题分析

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


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