set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
goALTER PROCEDURE [dbo].[P_E_Brand] @Link VARCHAR(100),@ReturnValue INT OUTPUT
AS
SET NOCOUNT ON
SET @ReturnValue= (SELECT ISNULL((SELECT PKID FROM Brand WHERE Link =''+@Link+''),0))
ALTER PROCEDURE P_E_Rows @TabName SYSNAME,@Condition VARCHAR(500),@ReturnValue INT OUTPUT
AS
SET NOCOUNT ON
DECLARE @SQL NVARCHAR(4000)
SET @SQL='SET '+CAST(@ReturnValue AS CHAR(10))+'=(SELECT 1 FROM '+@TabName+' WHERE '+@Condition+')'
EXECUTE SP_EXECUTESQL @SQL
PRINT @SQL--编译没有问题...............DECLARE @SQL varchar(50)
EXECUTE P_E_Rows Task,[PKID=1],@SQL output
print @SQL--什么都没有SELECT 1 From Task WHERE PKID=1--这样有数据
ALTER PROCEDURE P_E_Rows @TabName SYSNAME,@Condition VARCHAR(500),@ReturnValue INT OUTPUT
AS
SET NOCOUNT ON
DECLARE @SQL NVARCHAR(4000)
SET @SQL='SET @ReturnValue=(SELECT 1 FROM '+@TabName+' WHERE '+@Condition+')'
EXECUTE SP_EXECUTESQL @SQL,N'@ReturnValue INT OUTPUT',@ReturnValue编译成功
DECLARE @SQL INT
EXECUTE P_E_Rows Task,[PKID=1],@SQL output
print @SQL--什么都没有什么都没有。如果正常的来说应该是输出1怎么解决。。
这样执行有结果没啊?
SET @SQL='SET @ReturnValue=(SELECT 1 FROM '+@TabName+' WHERE '+@Condition+')'
改为
SET @SQL='SET @ReturnValue=(SELECT count(1) FROM '+@TabName+' WHERE '+@Condition+')'
or
SET @SQL='set @ReturnValue =0 SELECT @ReturnValue=@ReturnValue+1 FROM '+@TabName+' WHERE '+@Condition+''
ALTER PROCEDURE P_E_Rows @TabName SYSNAME,@Condition VARCHAR(500),@ReturnValue INT OUTPUT
AS
SET NOCOUNT ON
DECLARE @SQL NVARCHAR(4000)
SET @SQL='SET @ReturnValue=(SELECT 1 FROM '+@TabName+' WHERE '+@Condition+')'
EXECUTE SP_EXECUTESQL @SQL,N'@ReturnValue INT OUTPUT',@ReturnValue OUTPUT--这里忘记写output了
SET @ReturnValue=ISNULL(@ReturnValue,0)DECLARE @SQL INT
EXECUTE P_E_Rows Task,[PKID=2],@SQL output
print @SQL--OK--http://topic.csdn.net/u/20080505/18/db241695-5489-42ae-91be-4fd4fc3a85f7.html
--一楼的热心人士忘记写Output了...所以我也................