日期:2014-05-18  浏览次数:20777 次

执行存储过程的输入输出参数
SQL code

ALTER PROCEDURE [dbo].[PersonCount]
    -- Add the parameters for the stored procedure here
    @Personid int,
    @Personidout int OUTPUT
 --    <@Param2, sysname, @p2> <Datatype_For_Param2, , int> = <Default_Value_For_Param2, , 0>
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;
    SELECT @Personidout = MAX(age)+1 from Person
    SELECT Count(id)as Personid from Person where id=@Personid
    -- Insert statements for procedure here
    --SELECT <@Param1, sysname, @p1>, <@Param2, sysname, @p2>
END


SQL code

--DECLARE @RC int
DECLARE @Personid INT
DECLARE @Personidout INT
-- TODO: 在此处设置参数值。

EXECUTE  [AnodTestJoin].[dbo].[PersonCount]@Personid=2, @Personidout OUTPUT
Select 'person '+str(@Personidout)

执行时提示:
消息 119,级别 15,状态 1,第 6 行
必须传递参数 2,并以 '@name = value' 的形式传递后续的参数。一旦使用了 '@name = value' 形式之后,所有后续的参数就必须以 '@name = value' 的形式传递。


output修饰的参数怎么还需要以 '@name = value' 的形式传递????真不懂。。

------解决方案--------------------
SQL code

--DECLARE @RC int
DECLARE @Personid INT
DECLARE @Personidout INT
-- TODO: 在此处设置参数值。

EXECUTE  [AnodTestJoin].[dbo].[PersonCount]@Personid=2, @Personidout = @Personidout OUTPUT
Select 'person '+str(@Personidout)