2014-06-19 28 views
0

我试图从PHP调用mssql存储过程,并尝试传递货币参数时失败。这是我的代码:PHP mssql_bind传递货币数据类型失败

$proc = mssql_init("sp_something"); 

mssql_bind($proc, "@param1", $param1, SQLINT4, false, false); 
mssql_bind($proc, "@param2", $param2, SQLINT4, false, false); 
mssql_bind($proc, "@param3", $param3, SQLVARCHAR, false, false, 5); 
mssql_bind($proc, "@param4", $param4, SQLINT4, false, false); 
mssql_bind($proc, "@param5", $param5, SQLMONEY, false, false); 
mssql_bind($proc, "@param6", $param6, SQLMONEY, false, false); 
mssql_bind($proc, "@param7", $param7, SQLVARCHAR, true); 

mssql_execute($proc); 

echo mssql_get_last_message(); 

和失败,最后一条消息是:

Procedure or function 'sp_something' expects parameter '@param5', 
which was not supplied. 

这是我的存储过程:

ALTER PROCEDURE [dbo].[sp_something] 
@param1 smallint, 
@param2 smallint, 
@param3 varchar(8), 
@param4 int, 
@param5 money, 
@param6 money, 
@param7 bit OUTPUT AS 

--some stored proc 

我尝试从SQL Server Management Studio中exec的它,其成功案例:

exec sp_something 2014,5,'123456',1,12345.23,22222.33,0 

当您想要传递货币数据类型时,是否有任何棘手的方法?因为我有没有钱,参数,另一个存储过程,它运行平稳..

回答

0

所以最后我只是SQLVARCHAR使用金钱参数和它的作品以及

mssql_bind($proc, "@param5", $param5, SQLVARCHAR, false, false); 
mssql_bind($proc, "@param6", $param6, SQLVARCHAR, false, false);