PHP mssql_bind传递money数据类型失败

时间:2014-06-19 02:51:02

标签: php sql-server stored-procedures data-binding pymssql

我试图从PHP调用mssql存储过程,并在尝试传递money参数时失败。这是我的代码:

$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管理工作室及其成功执行exec:

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

当你想要传递money数据类型时有什么棘手的方法吗?因为我有另一个没有钱参数的存储过程,它运行顺畅..

1 个答案:

答案 0 :(得分:0)

所以最后我只使用SQLVARCHAR作为货币参数,而且效果很好

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