Помогите вызвать stored procedure в MSSQL

@rt

Новичок
Помогите вызвать stored procedure в MSSQL

dbo.spCreate
параметры:
@RETURN_VALUE(int, Return Value)
@Tr(varchar(10), Input)
@ID(int, Input)

Почему код не работает?

PHP:
$stmt=mssql_init("dbo.spCreate",$conn);
mssql_bind($stmt,"RETVAL",$val,SQLFLT8,TRUE);
$ID=33; 
mssql_bind($stmt,"@ID",&$PatsHost_ID,SQLINT4,TRUE); 
$tr = "blablabla"; 
mssql_bind($stmt,"@Tr",&$tr,SQLVARCHAR,TRUE);
$result=mssql_execute($stmt); 
print ("RETVAL = $val");
mssql_close ( $conn );

please help!
 

@rt

Новичок
Warning: mssql_execute(): message: Formal parameter '@ID' was defined as OUTPUT but the actual parameter not declared OUTPUT. (severity 16) in d:\www\blabla\lib\modules\left-panel\section-1\main.php on line 38

Warning: mssql_execute(): stored procedure execution failed in d:\www\ blabla \lib\modules\left-panel\section-1\main.php on line 38
RETVAL = 0
 

Найч

Алгоритмик :-)
[прости, не туда посмотрел]

Кстати, retval - целое число
 

Найч

Алгоритмик :-)
Скорее всего, ты в процедуре просто не указал OUTPUT возле соответствующего параметра. На всякий покажи определение входных параметров в процедуре.
 

@rt

Новичок
Originally posted by Найч
Скорее всего, ты в процедуре просто не указал OUTPUT возле соответствующего параметра. На всякий покажи определение входных параметров в процедуре.
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO

ALTER PROCEDURE spCreate
@Tr varchar(10),
@ID int
AS

INSERT INTO Tr
( Tr,
ID
)
VALUES(
@Tr,
@ID
)
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
 

Найч

Алгоритмик :-)
ГМ... А где ты указал, что @ID у тебя OUTPUT?
К слову, зачем тебе ИД аутпутом делать?
А зачем ТР аутпут?

ЗЫ. Если ты все еще не понял, то в M$ тоже надо указать, что параметр OUTPUT. Не только в ПХП.
 

Найч

Алгоритмик :-)
Издеваешся?
Это не проблема. А обычный синтаксис. Хочешь, чтоб значение вернулось - надо явно ему сказать.
 
Сверху