Home > Database > Mysql Tutorial > SQL存储过程和触发不能使用USE的应对方法_MySQL

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

WBOY
Release: 2016-06-01 13:51:03
Original
1437 people have browsed it

bitsCN.com

     大家都知道在SQL的存储过程,触发中不能使用USE。
怎么办呢,当然可以直接用[databasename].[user].[tablename]这样来访问,但是某些语句必须在当前数据库下执行,比

如sp_adduser等。

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

原文:

 

这里提供一个解决方案:

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

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

create proc test

as

exec('use pubs') exec sp_adduser 'test'

go

exec test

 

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

使用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

bitsCN.com
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template