declare @Commodity_Number AS char(4)
declare @Start_Date as DATETIME
declare @End_Date as DATETIME
set @Commodity_Number='1101'
set @Start_Date='2011-10-1'
set @End_Date ='2011-10-31'
execute('SELECT * FROM Fn_Commodity_Sales_Volume('+@Commodity_Number+','+@Start_Date+','+@End_Date+')')
其中Fn_Commodity_Sales_Volume(@Commodity_Number,+@Start_Date,@End_Date)是自定义函数,上述程序调试错误,请问如何解决?

解决方案 »

  1.   


    declare @tablename varchar(50)
    selecdt @tablename=dbo.Fn_Commodity_Sales_Volume(@Commodity_Number,@Start_Date,@End_Date)
    execute('SELECT * FROM '+@tablname)
      

  2.   

    非常感谢你的解惑,但问题还没有解决。执行如下代码:
    declare @tablename varchar(50)
    declare @Start_Date as DATETIME
    declare @End_Date as DATETIME
    declare @Commodity_Number as char(4)
    set @Commodity_Number='1101'
    set @Start_Date='2011-10-1' 
    set @End_Date ='2011-10-31'
    select @tablename=dbo.Fn_Commodity_Sales_Volume(@Commodity_Number,@Start_Date,@End_Date)
    execute('SELECT * FROM '+@tablename)
    提示信息如下:
    对象名 'dbo.Fn_Commodity_Sales_Volume' 无效。
    但执行:
    select * from dbo.Fn_Commodity_Sales_Volume(@Commodity_Number,@Start_Date,@End_Date)
    是正确的
      

  3.   

    执行如下代码:
    declare @tablename varchar(50)
    declare @Start_Date as DATETIME
    declare @End_Date as DATETIME
    declare @Commodity_Number as char(4)
    set @Commodity_Number='1101'
    set @Start_Date='2011-10-1' 
    set @End_Date ='2011-10-31'
    select @tablename='dbo.Fn_Commodity_Sales_Volume('+@Commodity_Number+','+@Start_Date+','+@End_Date+')'
    execute('SELECT * FROM '+@tablename)
    提示:
    从字符串转换为 datetime 时发生语法错误。
      

  4.   

    其实你这个过程,只要把
    execute('SELECT * FROM Fn_Commodity_Sales_Volume('+@Commodity_Number+','+@Start_Date+','+@End_Date+')')
    替换为:
    SELECT * FROM Fn_Commodity_Sales_Volume(@Commodity_Number,@Start_Date,@End_Date)
    就可以了。
    如果你一定不肯替换,SQL字符串要确保单引号的存在,也就是这样写:
    execute('SELECT * FROM Fn_Commodity_Sales_Volume('''+@Commodity_Number+''','''+@Start_Date+''','''+@End_Date+''')')
      

  5.   

    问题解决了,再次感谢qldsrx