这样执行存储过程,但是结果不对,怎么办?DECLARE @CateID INT;    SET @CateID = 2;
EXEC dbo.GetRecords SiteDB, 'CateID=' + @CateID + ''而这样执行是对的:
EXEC dbo.GetRecords SiteDB, 'CateID=2'

解决方案 »

  1.   

    EXEC dbo.GetRecords SiteDB, 'CateID=' + ltrim(@CateID) + ''
      

  2.   

    后面一对引号没用:
    EXEC dbo.GetRecords SiteDB, 'CateID=' + ltrim(@CateID)
      

  3.   

    DECLARE @CateID INT
    DECLARE @Str VARCHAR(100)
    SET @CateID = 2
    SET @Str = 'CateID='+ltrim(@CateID)EXEC dbo.GetRecords SiteDB, @Str
      

  4.   

    如果有多个参数怎么办?如:
    EXEC dbo.GetRecords SiteDB, 1, 10, 'CateID=' + @CateID + '', 'pkID'
      

  5.   

    你这句还是错的:
    EXEC dbo.GetRecords SiteDB, 1, 10, 'CateID=' + @CateID + '', 'pkID'
    应为:
    EXEC dbo.GetRecords SiteDB, 1, 10, 'CateID=' + ltrim(@CateID), 'pkID'关键是,@cateid 不是字符型,要转为字符型才能与'cateid='相连接,用 ltrim(@cateid),就是把它转为字符串型.
    如果有多个参数,照样写,注意数据就行了.
      

  6.   

    我象这样写也是错的:LTRIM(@CateID),
      

  7.   

    如果你的存储过程这样执行:
    EXEC dbo.GetRecords SiteDB, 'CateID=2'
    是对的话,那么这样执行:
    DECLARE @CateID INT;
    SET @CateID = 2;
    EXEC dbo.GetRecords SiteDB, 'CateID=' + ltrim(@CateID)
    肯定不会错.
      

  8.   

    原来的程序是这样的,我简化了一下:
    DECLARE @CateID INT;    SET @CateID = 1;
    DECLARE @TimeAmount INT
    EXEC dbo.GetRecords
    WebSite_CMS_Content
    ,'pkID'
    ,10
    ,1
    ,1
    ,'pkID,Title,TitleSe,Text,DateTimes'
    ,'CateID=2'
    ,'pkID'
    ,1
    ,@TimeAmount OUTPUT
    SELECT @TimeAmount AS TimeAmount
      

  9.   

    这样?
    DECLARE @CateID INT;    SET @CateID = 2;
    DECLARE @TimeAmount INT
    EXEC dbo.GetRecords
    WebSite_CMS_Content
    ,'pkID'
    ,10
    ,1
    ,1
    ,'pkID,Title,TitleSe,Text,DateTimes'
    ,'CateID='+ ltrim(@CateID)
    ,'pkID'
    ,1
    ,@TimeAmount OUTPUT
    SELECT @TimeAmount AS TimeAmount
      

  10.   

    我想用这行来取代:
    DECLARE @CateID INT;    SET @CateID = 2;
      

  11.   

    ....
    抱歉,调用存储过程的参数居然不能为表达式?
    那要写成这样了:
    DECLARE @CateID INT;    SET @CateID = 2;
    DECLARE @TimeAmount INT
    declare @s varchar(100)
    set @s='CateID='+ltrim(@CateID)
    EXEC dbo.GetRecords
    WebSite_CMS_Content
    ,'pkID'
    ,10
    ,1
    ,1
    ,'pkID,Title,TitleSe,Text,DateTimes'
    ,@s
    ,'pkID'
    ,1
    ,@TimeAmount OUTPUT
    SELECT @TimeAmount AS TimeAmount