PHP mssql_bind 传递钱数据类型失败
Posted
技术标签:
【中文标题】PHP mssql_bind 传递钱数据类型失败【英文标题】:PHP mssql_bind passing money datatype failed 【发布时间】:2014-06-19 02:51:02 【问题描述】:我尝试从 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 management studio 执行它并获得成功:
exec sp_something 2014,5,'123456',1,12345.23,22222.33,0
当你想传递金钱数据类型时有什么棘手的方法吗?因为我有另一个没有钱参数的存储过程,它运行顺利..
【问题讨论】:
【参考方案1】:所以最后我只用SQLVARCHAR
作为金钱参数,它的效果很好
mssql_bind($proc, "@param5", $param5, SQLVARCHAR, false, false);
mssql_bind($proc, "@param6", $param6, SQLVARCHAR, false, false);
【讨论】:
以上是关于PHP mssql_bind 传递钱数据类型失败的主要内容,如果未能解决你的问题,请参考以下文章