在sql里面查系统表可以查到,access就不知道了。
有个比较笨的办法:直接对A表进行查询,如果返回“不存在”错误,就说明A表不存在了!
  :)

解决方案 »

  1.   

    --判断某个表是否存在的存储过程
    create proc p_chktable
    @linkedserver_name sysname,  --链接服务器名
    @tbname sysname              --要检查的表名
    as
    EXEC sp_tables_ex @linkedserver_name,@tbname
    if @@rowcount>0
    return 1
    else
    return 0
    go--调用进行检查
    declare @re int
    exec @re=p_chktable N'Test','a'
    if @re=1
    select '存在a表'
    else
    select '不存在a表'
      

  2.   

    --创建链接服务器
    EXEC sp_addlinkedserver 
    'Test', 
    'OLE DB Provider for Jet',
    'Microsoft.Jet.OLEDB.4.0', 
    'C:\test.mdb'
    EXEC sp_addlinkedsrvlogin 'Test', 'false'
    go--判断某个表是否存在的存储过程
    create proc p_chktable
    @linkedserver_name sysname,  --链接服务器名
    @tbname sysname              --要检查的表名
    as
    EXEC sp_tables_ex @linkedserver_name,@tbname
    if @@rowcount>0
    return 1
    else
    return 0
    go--调用进行检查
    declare @re int
    exec @re=p_chktable N'Test','a'
    if @re=1
    select '存在a表'
    else
    select '不存在a表'
    go--删除测试环境
    exec sp_dropserver 'Test','droplogins'
    drop proc p_chktable
      

  3.   

    --如果不想返回一个空的结果集,则改存储过程为--判断某个表是否存在的存储过程
    create proc p_chktable
    @linkedserver_name sysname,  --链接服务器名
    @tbname sysname              --要检查的表名
    as
    create table #t(
    TABLE_CAT sysname,
    TABLE_SCHEM sysname,
    TABLE_NAME sysname,
    TABLE_TYPE varchar(32),
    REMARKS varchar(254))
    insert #t EXEC sp_tables_ex @linkedserver_name,@tbname
    if @@rowcount>0
    return 1
    else
    return 0
    go--调用进行检查
    declare @re int
    exec @re=p_chktable N'Test','a'
    if @re=1
    select '存在a表'
    else
    select '不存在a表'