使用 SQL Server 2012 中的 MSSQL_Query 的 PHP 调用存储过程返回无效值
Posted
技术标签:
【中文标题】使用 SQL Server 2012 中的 MSSQL_Query 的 PHP 调用存储过程返回无效值【英文标题】:PHP call stored procedure with MSSQL_Query from SQL server 2012 return invalid value 【发布时间】:2017-04-05 13:08:55 【问题描述】:我有一个从 MSSQL 调用存储过程的 php 文件。存储过程计算值并存储到临时表中。当我像这样从 PHP 调用存储过程时
$cmd="exec get_value ".implode(",",$parameter_arr);
$result = mssql_query("SET ANSI_NULLS ON;");
$result = mssql_query("SET ANSI_WARNINGS ON;");
$result= mssql_query($cmd,$conn) or die("Error :".mssql_get_last_message());
返回值只有“::”,没有整数。
当我在 T-Sql 中运行存储过程时,它返回正确的值 '02:15:00' T-SQL output
我使用的是 PHP 5.3.3。我需要升级我的php吗?或者为什么我无法在 PHP 中正确显示该值?
我无法控制存储过程。但我需要将结果显示到我的 php 页面中。然而,结果并不完全。有些值正在返回,有些则没有。 SELECT 语句中计算量大的值在 PHP 页面中显示有问题。喜欢
SELECT CASE WHEN LEN(CONVERT(VARCHAR,CONVERT(INT,ETS_PhoneHours*1.0))) = 1 THEN '0' + CONVERT(VARCHAR,CONVERT(INT,ETS_PhoneHours*1.0)) ELSE CONVERT(VARCHAR,CONVERT(INT,ETS_PhoneHours*1.0)) END + ':'
+ CASE WHEN LEN(CONVERT(VARCHAR,CONVERT(INT,(ETS_PhoneHours*1.0 - CONVERT(INT,ETS_PhoneHours*1.0))*60) )) = 1 THEN '0' + CONVERT(VARCHAR,CONVERT(INT,(ETS_PhoneHours*1.0 - CONVERT(INT,ETS_PhoneHours*1.0))*60) ) ELSE CONVERT(VARCHAR,CONVERT(INT,(ETS_PhoneHours*1.0 - CONVERT(INT,ETS_PhoneHours*1.0))*60) ) END + ':'
+ CASE WHEN LEN(SUBSTRING(CONVERT(VARCHAR,CONVERT(INT,((ETS_PhoneHours*1.0 - CONVERT(INT,ETS_PhoneHours*1.0))*60 - CONVERT(INT,(ETS_PhoneHours*1.0 - CONVERT(INT,ETS_PhoneHours*1.0))*60))*60)),1,2)) = 1 THEN '0' + SUBSTRING(CONVERT(VARCHAR,CONVERT(INT,((ETS_PhoneHours*1.0 - CONVERT(INT,ETS_PhoneHours*1.0))*60 - CONVERT(INT,(ETS_PhoneHours*1.0 - CONVERT(INT,ETS_PhoneHours*1.0))*60))*60)),1,2) ELSE SUBSTRING(CONVERT(VARCHAR,CONVERT(INT,((ETS_PhoneHours*1.0 - CONVERT(INT,ETS_PhoneHours*1.0))*60 - CONVERT(INT,(ETS_PhoneHours*1.0 - CONVERT(INT,ETS_PhoneHours*1.0))*60))*60)),1,2) END
AS 'ETS_Program_Hours'
这只会将 :: 返回到我的 mssql_query。 有人遇到过类似的问题吗?
请指教。谢谢
【问题讨论】:
我只需要显示是否从存储过程返回。但是php不能显示所有的返回值。 【参考方案1】:为什么不使用 CONVERT?
SELECT CONVERT(nvarchar(40),ETS_PhoneHours,108) AS 'ETS_Program_Hours'
【讨论】:
以上是关于使用 SQL Server 2012 中的 MSSQL_Query 的 PHP 调用存储过程返回无效值的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server2012中的Throw语句尝试 RAISERROR和THROW比较