这样执行存储过程,但是结果不对,怎么办?DECLARE @CateID INT; SET @CateID = 2;
EXEC dbo.GetRecords SiteDB, 'CateID=' + @CateID + ''而这样执行是对的:
EXEC dbo.GetRecords SiteDB, 'CateID=2'
EXEC dbo.GetRecords SiteDB, 'CateID=' + @CateID + ''而这样执行是对的:
EXEC dbo.GetRecords SiteDB, 'CateID=2'
EXEC dbo.GetRecords SiteDB, 'CateID=' + ltrim(@CateID)
DECLARE @Str VARCHAR(100)
SET @CateID = 2
SET @Str = 'CateID='+ltrim(@CateID)EXEC dbo.GetRecords SiteDB, @Str
EXEC dbo.GetRecords SiteDB, 1, 10, 'CateID=' + @CateID + '', 'pkID'
EXEC dbo.GetRecords SiteDB, 1, 10, 'CateID=' + @CateID + '', 'pkID'
应为:
EXEC dbo.GetRecords SiteDB, 1, 10, 'CateID=' + ltrim(@CateID), 'pkID'关键是,@cateid 不是字符型,要转为字符型才能与'cateid='相连接,用 ltrim(@cateid),就是把它转为字符串型.
如果有多个参数,照样写,注意数据就行了.
EXEC dbo.GetRecords SiteDB, 'CateID=2'
是对的话,那么这样执行:
DECLARE @CateID INT;
SET @CateID = 2;
EXEC dbo.GetRecords SiteDB, 'CateID=' + ltrim(@CateID)
肯定不会错.
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
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
DECLARE @CateID INT; SET @CateID = 2;
抱歉,调用存储过程的参数居然不能为表达式?
那要写成这样了:
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