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
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)
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
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)
-------------怎麼還犯同樣的錯誤?
谢谢鱼,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'在这里起什么作用?
谢谢鱼,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
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
根本就不是你这样用呀
要这样exe('select '+@recordcount+'.......)
----------------
這麼寫是錯誤的
DECLARE @dir varchar(10)
declare @s varchar(100)
set @s='SELECT '+@recordcount+'=(SELECT COUNT(1) FROM tblTopic
WHERE Dir LIKE ''%' + @dir + '%'')''exec(@s)
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
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)
-------------怎麼還犯同樣的錯誤?
谢谢鱼,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
執行可以重新使用許多次或已經動態建立的 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。
它的參數就必須這麼寫