set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GOALTER PROCEDURE [dbo].[pkg_CallLog#ShowRe]
@tblname varchar(20),
@sql varchar(1000),
@ID int
as
if MarkIP ='192.168.11.210'
@tblname = T_CallLog
if MarkIP = '192.168.0.211'
@tblname = T_CallLog1
begin
set @sql='select re from '+@tblname+'where ID ='+@ID
execute (@sql)
end
错误提示
消息 102,级别 15,状态 1,过程 pkg_CallLog#ShowRe,第 8 行
'@tblname' 附近有语法错误。
消息 102,级别 15,状态 1,过程 pkg_CallLog#ShowRe,第 10 行
'@tblname' 附近有语法错误。
救命啊.....................

解决方案 »

  1.   

    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    GOALTER PROCEDURE [dbo].[pkg_CallLog#ShowRe]
    @tblname varchar(20),
    @sql varchar(1000),
    @ID int
    as
    if MarkIP ='192.168.11.210'
    set @tblname = T_CallLog
    if MarkIP = '192.168.0.211'
    set @tblname = T_CallLog1
    begin
    set @sql='select re from '+@tblname+'where ID ='+@ID
    execute (@sql)
    end
      

  2.   

    @tblname = 'T_CallLog'2个赋值时的引号
      

  3.   

    不过不知道你这个过程传入@sql varchar(1000)的意义何在
      

  4.   


    能分析通。。..但是'MarkIP' 无效。消息 207,级别 16,状态 1,过程 pkg_CallLog#ShowRe,第 7 行
    列名 'MarkIP' 无效。
    消息 207,级别 16,状态 1,过程 pkg_CallLog#ShowRe,第 9 行
    列名 'MarkIP' 无效。
      

  5.   

    你MarkIP 不能直接用。  要DECLARE个变量  SELECT 查出来赋值给它 才能用
      

  6.   

    MarkIP你应该传入比如@sql换成@MarkIP然后下面判断的时候if @MarkIP ='192.168.11.210' --判断传入的MarkIP是否等于...
      

  7.   

    比如
    DECLARE @MarkIP varchar(20)
      select @MarkIP = MarkIP FROM table_name 
      

  8.   

    天啊累死了。。头疼。
    谢谢大家
    谢谢 geniuswjt,wszhongwen ,qianjin036a 继续学习