建议改成:
declare @s varchar(100)
set @s='SELECT * FROM '+@TABLE_NAME+' WHERE KTMC LIKE @XMMC+'%'
exec @s

解决方案 »

  1.   

    先引用相应的表,CREATE PROCEDURE [DBO].[NORENAME]
      @TABLE_NAME CHAR(2), 
      @XMMC VARCHAR(100)
    ASUse @TABLE_NAME SELECT * FROM @TABLE_NAME WHERE KTMC LIKE @XMMC+'%'
    GO
      

  2.   

    在存储过程中好像不能使用USE ***
      

  3.   

    CREATE PROCEDURE [DBO].[NORENAME]
      @TABLE_NAME CHAR(2), 
      @XMMC VARCHAR(100)
    ASSELECT * FROM [@TABLE_NAME] WHERE KTMC LIKE @XMMC+'%'
    GO
      

  4.   

    CREATE PROCEDURE [DBO].[NORENAME]
      @TABLE_NAME CHAR(2), 
      @XMMC VARCHAR(100)
    ASSELECT * FROM [@TABLE_NAME] WHERE KTMC LIKE @XMMC+'%'
    GO
    试一试,我试过了没问题
      

  5.   

    CREATE PROCEDURE [DBO].[NORENAME]
     declare @TABLE_NAME [CHAR](2)
     declare @XMMC  [VARCHAR](100)
    ASSELECT * FROM @TABLE_NAME WHERE KTMC LIKE @XMMC+'%'
    GO
    试一下
      

  6.   

    CREATE PROCEDURE [DBO].[NORENAME]
      @TABLE_NAME CHAR(2), 
      @XMMC VARCHAR(100)
    ASdeclare @s nvarchar(500)
    select @s='Select * from '+@table_name where ktmc like '''+@xmmc+'%'''
    exec sp_executesql @s
    GO
      

  7.   

    declare @s nvarchar(500)
    select @s='Select * from '+@table_name where ktmc like '''+@xmmc+'%'''
    exec sp_executesql @s
    这在query中可以这样编写
    在sql server中可以么?我试了则么不行
      

  8.   

    当然可以了,我就是在query analyzer中通过的,但在declare后面应该先给@table_name和@xmmc赋值,如select @table_name='你的表名'
    select @xmmc='过滤条件'
      

  9.   

    对了,@table_name和@xmmc是你的存储过程(假定存储过程名称为xxx)的两个传入参数呀,你在query analyzer中写这样的句子肯定可以
    exec xxx '你的表名','过滤条件'