首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 呼叫 MSSQL 預存程序並透過 RETVAL 取得回傳值

     編輯:PHP 綜合知識

適用場景

MSSQL 預存程序使用 RETURN @int 回傳狀態碼(非 OUTPUT 參數),PHP 需透過 RETVAL 參數綁定取得。

PHP 程式碼

<?php
$conn = mssql_connect('host', 'user', 'pass');
mssql_select_db('db', $conn);

$stmt = mssql_init('P__Global_Test', $conn) or die('Init SP failed');

$returnValue = 0;
// 關鍵:綁定 RETVAL,參數方向 true 表示輸出
mssql_bind($stmt, 'RETVAL', $returnValue, SQLINT4, true);

mssql_execute($stmt);

if ($returnValue == 0) {
    echo 'ABCD'; // 成功
} else {
    echo 'EFGH'; // 失敗
}
mssql_free_statement($stmt);
?>

預存程序範例

CREATE PROCEDURE dbo.P__Global_Test
AS
SET NOCOUNT ON
IF NOT EXISTS (SELECT * FROM _Test)
    RETURN 0
ELSE
    RETURN 1
SET NOCOUNT OFF
GO

關鍵點總結

  • mssql_init() 建立陳述式控制代碼
  • mssql_bind($stmt, 'RETVAL', $var, SQLINT4, true):
    參數名固定為 RETVAL、型別 SQLINT4、true 表示輸出參數
  • mssql_execute() 執行後 $returnValue 即被填入
  • 現代專案建議改用 PDO_SQLSRV 或 sqlsrv 驅動,mssql_* 函數已移除(PHP 7+)

PDO_SQLSRV 寫法對照

$dbh = new PDO('sqlsrv:Server=host;Database=db', 'user', 'pass');
$stmt = $dbh->prepare('EXEC P__Global_Test');
$stmt->execute();
$returnValue = $stmt->fetchColumn(); // 直接取得 RETURN 值
echo $returnValue == 0 ? 'ABCD' : 'EFGH';
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved