2017-02-16 1 views
0

Ich habe ein Problem, die Ausgabe der gespeicherten Prozedur nach erfolgreichem Ausführen des Verfahrens anzeigen ... Ich hoffe, jeder kann mir helfen .... hier meine gespeicherte Prozedur ..Aufruf der gespeicherten Prozedur und Anzeige der Ausgabe in PHP MS Sql

$sql = "EXEC [dbo].[sp_mRetailerRegInfo_Add] '$var1','$var2','$var3','$var4','',''"; 

das ist mein Beispieldaten in meinem SP

EXEC sp_mRetailerRegInfo_Add 'asdf','asdf','[email protected]','123', @RetailerId output, @ErrorCode output 

und das ist mein Beispielcode ..i die Prozedur ausführen können, aber es die Ausgabe nicht angezeigt ist

<?php 

$serverName = "localhost"; 

$connectionInfo = array("Database"=>"db", "UID"=>"user", "PWD"=>"pass"); 
$conn = sqlsrv_connect($serverName, $connectionInfo); 


if($conn) { 
    echo "Connection established.<br />"; 
}else{ 
    echo "Connection could not be established.<br />"; 
    die(print_r(sqlsrv_errors(), true)); 
} 



//----------------------------------------------- 
// Perform operations with connection. 
//----------------------------------------------- 
$sql = "EXEC [dbo].[sp_mRetailerRegInfo_Add] '$var1','$var2','$var3','$var4','',''"; 


$result = sqlsrv_query($conn, $sql); 
if (!$result) { 
    echo 'Your code is fail.'; 
} 
else { 
    echo 'Success!'; 
    echo $result; 
} 

?> 

wird die Ausgabe wie diese (ID0001) sein und, aber ich die Ausgabe wie diese etablierten

Verbindung erhalten.

Erfolg! Resource id # 3

Antwort

0

Nun, es ist möglich. Es gibt eine Funktion namens mssql_bind zum Binden des Wertes an eine PHP-Variable

Um den SP aufzurufen und den Ausgang zu speichern. Versuchen Sie so etwas wie dieses

DECLARE @appout int; -- variable to hold the data returned by SP. 

EXEC checkFollowing 10,20, @output = @appout OUTPUT; -- This is how i will call a SP. 

@appout - will hold the data returned by the procedure. 

So können Sie tun, um Ihre Ausgangsparameter ausführen wie folgt:

$outVar1 = ''; 

mssql_bind($procedure, "@appout", $outVar1, SQLVARCHAR, true); 

mssql_execute($procedure,true); 

print($outVar1); 
1

Mit einer gespeicherten Prozedur, würden Sie einen OUTPUT Parameter verwenden, die Sie einen Wert innerhalb der Prozedur zuweisen würde, . Wenn der Vorgang abgeschlossen ist, würden Sie auf diesen Parameter zugreifen und dessen Inhalt wie gewünscht verwenden.

Sie können Return Data from a Stored Procedure auf der MSDN-Website lesen, um eine Idee zu erhalten, wie eine gespeicherte Prozedur geschrieben wird.

Sie sollten sich einen Blick auf this already answered question werfen, der einige Details zum Zugriff auf den Parameter von PHP enthält. Du würdest die zweite Antwort dort haben wollen:

Der zweite Param der Ausführung muss wahr sein, eher als conn. Diese sollte funktionieren:

$conn = mssql_connect('server', 'user', 'pass'); 
mssql_select_db('db', $conn); 

$procedure = mssql_init('usp_StoredProc', $conn); 

$tmpVar1 = 'value'; 
$tmpVar2 = 'value2'; 

$outVar1 = ''; 
$outVar2 = ''; 

mssql_bind($procedure, "@var1", $tmpVar1, SQLVARCHAR, false, false); 
mssql_bind($procedure, "@var2", $tmpVar2, SQLVARCHAR, false, false); 

mssql_bind($procedure, "@outVar1", $outVar1, SQLVARCHAR, true); 
mssql_bind($procedure, "@outVar2", $outVar2, SQLVARCHAR, true); 

mssql_execute($procedure,true); 

print($outVar1); 
print($outVar2); 

Wenn Sie die Definition für Ihre gespeicherte Prozedur liefern könnten, könnte ich genauer auf ausarbeiten, wie Sie Ihren PHP Anruf einzurichten.

+0

Hallo @gmiley: Ich möchte nur meine Ausgabe von SP (wie Beispiel RetailerId) nach dem Erfolg zeigen die Daten basierend auf meinem Beispielcode in meiner Frage..danke – zack

Verwandte Themen