![](/img/trans.png)
[英]T-SQL : How can I retrieve the OUTPUT from an INSERT statement with PEAR DB?
[英]How to capture T-SQL output generated by print statement with PHP ODBC client?
我有一個存儲過程正在使用事務處理print
語句返回其結果以返回其結果。
到目前為止,我一直使用php_mssql
擴展名及其mssql_get_last_message()
函數來獲取返回的文本。
由於PHP放棄了對mssql擴展的支持,因此我決定使用php_odbc
擴展。
我面臨的問題是我無法使用odbc_errormsg()
捕獲信息。 有沒有辦法使用PHP和ODBC檢索打印消息?
我發現了一些有趣的問題,涉及print
和odbc
的主題,但都與PHP無關。
帶有mssql的PHP代碼(有效):
$query = "exec dbo.PdaBLCreer 12345";
$res = mssql_query($query);
$message = mssql_get_last_message();
帶odbc的PHP代碼(無效,$ message始終為空):
$query = "exec dbo.PdaBLCreer 12345";
$res = odbc_exec($connection, $query);
$message = odbc_errormsg($connection);
T-SQL存儲過程
CREATE PROCEDURE dbo.PdaBLCreer
@iArgument int
AS
BEGIN
...
PRINT @vNr
RETURN @vNr
END
我找到了解決方法。 它適用於存儲過程的return
值,但不適用於print
。 由於我的存儲過程可以打印並返回,因此無需修改即可從過程中獲取結果:
替換舊的5.2 PHP代碼:
$query = "exec dbo.PdaBLCreer 12345";
$res = mssql_query($query);
$message = mssql_get_last_message();
與此PHP 5.4代碼一起使用php_odbc:
$query = "DECLARE @return_status int
EXEC @return_status = dbo.PdaBLCreer 12345
SELECT 'ReturnStatus' = @return_status";
$res = odbc_exec($connection, $query);
$line = odbc_fetch_array($res);
$message = $line['ReturnStatus'];
該解決方案是有限的。 當查詢返回表格結果和消息時,它將不起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.