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

MYSQL
MySql:存储程序、函数、触发程序及复制:常见问题
MySQL:数据库系统体系结构之概念模式
MySQL:最小函数依赖集知多少
MySQL:小编浅谈关系代数中的语义
如何运用SQL Server 2005中的模板参数
实例:NStarfaiNet的SQL XML文件示范
SQL Server 2000桌面引擎默认配置空口令漏洞
MySQL 5.0.16 乱码问题处理办法
索引对查询条件顺序的影响
从SQL备份文件中导入现存数据库
利用C#实现分布式数据库查询
用ORACLE8i修复数据库坏块的三种方法
Sql Server2000+Sql Server Mobile Edition配置合并复制
MySQL与ASP.NET配合更强大
防范SQL注入攻击的新办法
如何修改遗失的MySQL的ROOT用户密码
在win2003下MySQL数据库每天自动备份
如何提高MySQL性能
实例讲解MySQL数据库的查询优化技术
了解MYSQL数据库调度与锁定的问题

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


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