根本就不是你这样用呀
要这样exe('select '+@recordcount+'.......)

解决方案 »

  1.   


    DECLARE @recordcount int
    DECLARE @dir varchar(10)
    DECLARE @SQL Nvarchar(1000)Select @SQL = 'SELECT @recordcount=(SELECT COUNT(1) FROM tblTopic WHERE Dir LIKE ''%' + @dir + '%'')'
    EXEC sp_executesql @SQL,N'@recordcount int output',@recordcount output
      

  2.   

    deanlh(缘来如此) ( ) 信誉:100  2007-09-04 10:08:56  得分: 0  
     
     
       根本就不是你这样用呀
    要这样exe('select '+@recordcount+'.......)  
     
    ----------------
    這麼寫是錯誤的
      

  3.   

    DECLARE @recordcount int
    DECLARE @dir varchar(10)
    declare @s varchar(100)
    set @s='SELECT '+@recordcount+'=(SELECT COUNT(1) FROM tblTopic
     WHERE Dir LIKE ''%' + @dir + '%'')''exec(@s)
      

  4.   

    DECLARE @recordcount int
    DECLARE @dir varchar(10),
            @Sql nvarchar(4000)Set @Sql=N'SELECT @recordcount=(SELECT COUNT(1) FROM tblTopic WHERE Dir LIKE ''%' + @dir + '%'')' exec sp_executesql @Sql,N'@recordcount int out',@recordcount out
      

  5.   

    fa_ge(鶴嘯九天) ( ) 信誉:100  2007-09-04 10:11:35  得分: 0  
     
     
       DECLARE @recordcount int
    DECLARE @dir varchar(10)
    declare @s varchar(100)
    set @s='SELECT '+@recordcount+'=(SELECT COUNT(1) FROM tblTopic
     WHERE Dir LIKE ''%' + @dir + '%'')''exec(@s)
      
     
    -------------怎麼還犯同樣的錯誤?
      

  6.   

    谢谢鱼,sp_executesql也是看了你其它的回贴才知道的忘了说了,我的实际情况@recordcount是一输出参数,按照你的写法还是得到输出值@recordcount=0,实际上返回有几条记录另外这样写 sp_executesql 'SELECT @recordcount=(SELECT COUNT(1) FROM tblTopic WHERE Dir LIKE ''%' + @dir + '%'')',N'@recordcount int output',@recordcount output就不行,非得写进变量中?N'在这里起什么作用?
      

  7.   

    chocolateboy(小艺) ( ) 信誉:100  2007-9-4 15:03:21  得分: 0  
     
     
       
    谢谢鱼,sp_executesql也是看了你其它的回贴才知道的忘了说了,我的实际情况@recordcount是一输出参数,按照你的写法还是得到输出值@recordcount=0,实际上返回有几条记录另外这样写 sp_executesql 'SELECT @recordcount=(SELECT COUNT(1) FROM tblTopic WHERE Dir LIKE ''%' + @dir + '%'')',N'@recordcount int output',@recordcount output就不行,非得写进变量中?N'在这里起什么作用?  
     
    --------------------------這個就是返回紀錄數的?如果還是0,檢查下表中是否有滿足條件的數據。DECLARE @dir varchar(10)
    EXEC('SELECT * FROM tblTopic WHERE Dir LIKE ''%' + @dir + '%''')另外,代碼可以這麼修改下DECLARE @recordcount int
    DECLARE @dir varchar(10)
    DECLARE @SQL Nvarchar(1000)Select @SQL = 'SELECT @recordcount=COUNT(1) FROM tblTopic WHERE Dir LIKE ''%' + @dir + '%'''
    EXEC sp_executesql @SQL,N'@recordcount int output',@recordcount output
    Select @recordcount
      

  8.   

    至於那個N,你可以參考聯機幫助sp_executesql
    執行可以重新使用許多次或已經動態建立的 Transact-SQL 陳述式或批次。Transact-SQL 陳述式或批次可以包含內嵌參數。語法
    sp_executesql [@stmt =] stmt
    [
        {, [@params =] N'@parameter_name  data_type [,...n]' }
        {, [@param1 =] 'value1' [,...n] }
    ][@params =] N'@parameter_name  data_type [,...n]'包含嵌入 stmt 的所有參數之定義的字串。字串必須是 Unicode 常數或可以以隱含方式轉換為 ntext 的變數。每個參數定義包含一個參數名稱與資料型別。n 是指出額外參數定義的替代符號 (Placeholder)。stmt 中指定的每個參數都必須在 @params中定義。如果 stmt 中的 Transact-SQL 陳述式或批次不包含參數,就不需要 @params。參數的預設值為 NULL。
    它的參數就必須這麼寫