【发布时间】:2015-03-27 10:02:46
【问题描述】:
存储过程从 MS SQL Server 测试并给出了预期的输出(对于@AID)。但是当从 PHP 调用时,@AID 总是给出 0。我在这里做错了什么?
$stmt = mssql_init('UpdateActivity2', $conn);
mssql_bind($stmt, '@ParentActivity', $PP_ActivityID, SQLINT4, false, false, 8);
mssql_bind($stmt, '@ActivityName', $activityName, SQLVARCHAR, false, false, 255);
mssql_bind($stmt, '@ActivityType', $activityType, SQLINT4, false, false, 4);
mssql_bind($stmt, '@ActivityStatus', $activityStatus, SQLINT4, false, false,4);
mssql_bind($stmt, '@Descr', $descr, SQLVARCHAR, false, false, 255);
mssql_bind($stmt, '@RegistrationDate', $now, SQLVARCHAR, false, false, 255);
mssql_bind($stmt, '@FinishDate', $now, SQLVARCHAR, false, false, 255);
mssql_bind($stmt, '@Owner', $owner, SQLINT4, false, false, 4);
mssql_bind($stmt, '@SourceID', $sourceID, SQLINT4, false, false, 4);
mssql_bind($stmt, '@ContactID', $c, SQLINT4, false, false, 4);
mssql_bind($stmt, '@ActivityAddress',$a, SQLVARCHAR, false, false, 255);
mssql_bind($stmt, '@ExtReference', $e, SQLVARCHAR, false, false, 255);
mssql_bind($stmt, '@ResponsibleCompanyID', $e, SQLINT4, false, false, 4);
mssql_bind($stmt, '@AID', $h, SQLINT4, true);
$proc_result = mssql_execute($stmt);
echo $h;
@AID 是存储过程的输出参数。但是,$h 总是给出 0。 这是 SP:
ALTER PROCEDURE [dbo].[UpdateActivity2]
@ParentActivity int,
@ActivityName varchar(150),
@ActivityType int,
@ActivityStatus int,
@Descr varchar(1024),
@RegistrationDate datetime,
@FinishDate datetime,
@Owner int,
@SourceID int,
@ContactID int,
@ActivityAddress varchar(150),
@ExtReference varchar(50),
@ResponsibleCompanyID int,
@AID int OUTPUT
AS
DECLARE @Value int;
EXEC @Value = PG_GetSeq @Name = 'Activity'
PRINT('Printing')
PRINT(@Value)
INSERT INTO Activity(
ActivityID,
ParentActivity,
ActivityName,
ActivityType,
ActivityStatus,
Descr,
RegistrationDate,
FinishDate,
Owner,
SourceID,
ContactID,
ActivityAddress,
ExtReference,
ResponsibleCompanyID
)
VALUES(
@Value,
@ParentActivity,
@ActivityName,
@ActivityType,
@ActivityStatus,
@Descr,
@RegistrationDate,
@FinishDate,
@Owner,
@SourceID,
@ContactID,
@ActivityAddress,
@ExtReference,
@ResponsibleCompanyID
)
SELECT @AID = ActivityID FROM Activity WHERE ActivityID = @Value
Insert 语句为 @Value 获取正确的值,并且该行也正确插入。
【问题讨论】:
标签: php sql-server stored-procedures