Problema: Não consigo receber no PHP retorno de Stored Procedure
22/08/2014
0
Ele executa certinho, atualiza a tabela no banco, mas não consigo pegar o parâmetro de retorno no PHP.
O código que estou usando:
<?php
$serverName = "servatomo\sqlexpress"; //serverName\instanceName
$connectionInfo = array( "Database"=>"NomeBD", "UID"=>"NomeUsuario", "PWD"=>"SenhaUser");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if (!($conn)) {
echo "Conexão com o Banco de Dados com problemas !!!<br />";
die( print_r( sqlsrv_errors(), true));
}
$sql = " {call PROXIMO_ID(@VAR_TABELA=?, @VAR_ID_RETURN=?) } ";
$VAR_TABELA = 'CADASTRO';
$VAR_ID_RETURN = '';
$params = array(
array(&$VAR_TABELA, SQLSRV_PARAM_IN),
array(&$VAR_ID_RETURN, SQLSRV_PARAM_OUT)
);
$stmt = sqlsrv_prepare($conn,$sql,$params) or die(print_r(sqlsrv_errors(),true));
if ($stmt===false) {
echo 'Erro Prepare';
print_r(sqlsrv_errors(),true);
} else {
if (sqlsrv_execute($stmt)===false) {
print_r(sqlsrv_errors(),true);
echo 'Erro Execute';
} else {
echo 'Deu Certo';
}
echo '<br>[';
echo $VAR_ID_RETURN;
echo ']<br>';
Na tela do Browser verificamos que deu certo, mas não traz o parâmetro de retorno da SP.
Isto é o que é mostrado no browser após a execução:
Deu Certo
[]
Se alguém tiver uma dica agradeço,
Com a mesma conexão consigo fazer operações normais no banco (SELECT, INSERT, UPDATE, ...)
Rodo Stored Procedure, mas quando a Stored Procedure tem parâmetro de retorno não dá certo.
Abraços
Celso Medeiros
Celso Medeiros
Posts
27/08/2014
Celso Medeiros
Quando executo:
var_dump($VAR_ID_RETURN);
Obtenho de retorno:
string(0) ""
Alguma outra dica?
28/08/2014
Lucas Burg
28/08/2014
Celso Medeiros
a parte do código que alterei:
$stmt = sqlsrv_query($conn,$sql,$params);
sqlsrv_next_result ($stmt);
A stored procedure:
CREATE procedure [dbo].[PROXIMO_ID] (
@VAR_TABELA VARCHAR(60),
@VAR_ID_RETURN INTEGER OUTPUT
)
AS
BEGIN
IF @VAR_TABELA = 'CADASTRO'
SELECT @VAR_ID_RETURN = 1
ELSE
SELECT @VAR_ID_RETURN = 2
RETURN @VAR_ID_RETURN;
END
02/09/2014
Celso Medeiros
Clique aqui para fazer login e interagir na Comunidade :)