IF EXISTS (SELECT name FROM sys.sysdatabases WHERE name = 'dba')
 BEGIN
 use dba
end当dba不存在时,提示错误
Could not locate entry in sysdatabases for database 'shangchao'. No entry found with that name. Make sure that the name is entered correctly.
为什么提示这个啊? 请大家不吝赐教啊。

解决方案 »

  1.   

    提示错误肯定是的,但是为什么提示database 'shangchao'?不是dba吗?
      

  2.   

    汗写错了, Could not locate entry in sysdatabases for database 'dba'. No entry found with that name. Make sure that the name is entered correctly.
      

  3.   

    是啊,因为不存在dba这个数据库啊,就会提示如上错误。如果存在就会自动使用dba数据库
      

  4.   

    +1,既然不存在,怎么能use呢?
      

  5.   

    不用 end if 吗?
      

  6.   

    你可以创建一个名字为dba的数据库,然后就不会报错了
      

  7.   


    IF EXISTS (SELECT name FROM sys.sysdatabases WHERE name = 'dba')
     
    这不是已经做判断了,为什么还执行 use dba
      

  8.   

    哦  你少了个 then 吧
      

  9.   

    哈哈,算了算了 sql 这样乱
    搞不好 是 Transact-SQL你跟他讲 mysql
    或者mssql
      

  10.   

    ~~ 用的SQL
    Transact-SQL还不知道是什么呵呵
      

  11.   

    去学T-SQL去,sql基本的语法要懂
      

  12.   

    不太清楚原因,不过可以用动态sql这个workaround来解决:IF EXISTS (SELECT name FROM sys.sysdatabases WHERE name = 'dba')
     BEGIN
      execute(N'use dba')
    end
     
      

  13.   

    use语法是优先验证的 然后编译,这类东西只能把use封装到动态语句里才不会被验证。
    上面有例子 没啥问题