| 订阅 | 在线投稿
分享
 
 
 

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

2008-08-16 07:22:22 编辑來源:互联网 国际版 评论
 
 
本文为【SQL存储过程和触发不能使用USE的应对方法】的汉字拼音对照版显示拼音
  dajiadouzhidaozaiSQLdecunchuguochengchufazhongbuneng使shiyongUSE

  zenmebannedangrankeyizhijieyong[databasename].[user].
  rusp_adduserdeng

  zhiqiankandaoyipianwenzhangwoceshileyouwenti

  yuanwen

  zhelitigongyigejiejuefangan:

  使shiyongExec(ute)yujulaigaibiandangqianshujukubuguoyaozhuyideshishujukuhuanjingdegenggaizhizaiExecuteyujujieshuqianyouxiaosuoyinibixuba

  houmiandeyujuheExecutefangdaoyiqiExample:

  create proc test

  as

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

  go

  exec test

  wozijishileyixiagenjuxiamiandeyujuzhixingmeiyouwenti

  使shiyongExec(ute)yujulaigaibiandangqianshujuku

  ruxia

  CREATE PROCEDURE cs

  AS

  BEGIN

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

  END

  GO

  youru

  CREATE PROCEDURE cs

  AS

  BEGIN

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

  END

  GO原文
 
 
大家都知道在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
󰈣󰈤
 
 
>>返回首页<<
 为你推荐
 
 
 
 转载本文
 UBB代码 HTML代码
复制到剪贴板...
 
 
 热帖排行
 
 
王朝网络微信公众号
微信扫码关注本站公众号wangchaonetcn
 
  免责声明:本文仅代表作者个人观点,与王朝网络无关。王朝网络登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
©2005- 王朝网络 版权所有