Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

eder.luca2013

Retorno de dados em branco

Recommended Posts

Pessoal estou desenvolvendo um programa simples em php onde eu chamo uma stored procedure no sql server e o mesmo me retorna um arquivo xml, e posteriormente eu gero um arquivo txt em uma pasta com o xml em questão, porém percebi que no banco de dados a informação esta sendo corretamente inserida, porem não consigo entender o pq não esta vindo o retorno sendo que a stored procedure esta com à opção output correta, se eu executo o retorno aparece corretamente no final da execução no sql server alguém poderia me ajudar?

 

Lembrando que todos os warning e erros exibidos pelo php eu fui resolvendo um a um e mesmo assim não consigo entender esse problema.

 

Abaixo segue o programa que fiz:

<?php
    $servidor = '127.0.0.1';
    $usuario = 'SA';
    $banco = 'TESTE';
    $senha = '123';
           
    $connectionInfo = array( "UID"=>$usuario, "PWD"=>$senha, "Database"=>$banco);
  
    $conexao = sqlsrv_connect($servidor, $connectionInfo);
	
	$IDPESSOA = 1474;
	$DTDIGITACAO = '2015-01-21T00:00:00';
	$DTINICIOATIVIDADE = '2015-01-21T00:00:00';
	$DTFIMATIVIDADE = '2015-01-31T00:00:00';
	$TITULO = 'TESTE DE INCLUSAO DA AGENDA';
	$DESCRICAO = 'TESTANDO A INCLUSAO DA AGENDA';
	$PRIORIDADE = 'A';
	$resultado = '';
        $XMLINSEREAGENDA = '';
	
	$sql = "exec WEB_SINCRO_INSERE_AGENDA " .$IDPESSOA .", '" .$DTDIGITACAO ."', '" .$DTINICIOATIVIDADE ."' , '" .$DTFIMATIVIDADE ."' , '" .$TITULO ."' , '" .$DESCRICAO ."' , '" .$PRIORIDADE ."' , ''" ;
                 
        $param = array();
        $resposta = sqlsrv_query($conexao,  $sql, $param);        
    	   
        while( $row = sqlsrv_fetch_array( $resposta, SQLSRV_FETCH_BOTH) ) 
        {
          $XMLINSEREAGENDA =  $row['RETORNO'];               
        }
                    
       
        $arquivo = fopen('c:\spool\INSERIAGENDA.xml','w+');
        if ($arquivo) {
          if (!fwrite($arquivo, $XMLINSEREAGENDA)) die('Não foi possível atualizar o arquivo.');
             echo 'Arquivo XML Gerado com Sucesso Inseri Agenda' . "<br />";
             fclose($arquivo);
        }
?>

Abaixo segue a stored procedure:

ALTER PROCEDURE [dbo].[WEB_SINCRO_INSERE_AGENDA] (@IDPESSOA INTEGER, @DTDIGITACAO AS SMALLDATETIME, @DTINICIOATIVIDADE AS SMALLDATETIME, @DTFIMATIVIDADE AS SMALLDATETIME, @TITULO VARCHAR(50), 
                                           @DESCRICAO VARCHAR(MAX), @PRIORIDADE VARCHAR(1), @XML XML OUTPUT) 
AS 
BEGIN
   DECLARE @IDAGENDA AS INTEGER

   SET @IDAGENDA = NULL
   SET @XML = NULL

   BEGIN TRY
      IF EXISTS(SELECT PESSOA FROM PESSOA WHERE PESSOA = @IDPESSOA)
	  BEGIN
          INSERT INTO AGENDA (MODULO, PESSOARESPONSAVEL, PESSOA, DT_DIGITADAAGENDA, DT_INICIOATIVIDADE, DT_FIMATIVIDADE, DS_LOCALIZACAO, IN_SITUACAO,
                                  IN_PRIORIDADE, ID_PESSOABENEFICIARIO, DS_ATIVIDADEDETALHADA, DS_ATIVIDADE, ID_PESSOACANCELAMENTO, DT_CANCELAMENTO, IN_CANCELAMENTOMOTIVO,
                                  IN_BLOQUEADO)
                           SELECT 0, @IDPESSOA, @IDPESSOA, @DTDIGITACAO, @DTINICIOATIVIDADE, @DTINICIOATIVIDADE, '', 'A', @PRIORIDADE, 0, @DESCRICAO, @TITULO, NULL, NULL, NULL,'N'

	      SET @IDAGENDA = (SELECT MAX(ID_AGENDA) FROM AGENDA)

	      SET @XML = (SELECT ID_AGENDA AS IDAGENDA, DT_DIGITADAAGENDA  AS DTDIGITACAO, DT_INICIOATIVIDADE AS DTINICIO, DT_FIMATIVIDADE AS DTFIM, 
		                     DS_ATIVIDADE AS ATIVIDADE, DS_ATIVIDADEDETALHADA AS DETALHE, 'DADOS INSERIDOS COM SUCESSO' AS RETORNO
		                FROM AGENDA 
				       WHERE ID_AGENDA = @IDAGENDA
				       FOR XML PATH ('AGENDA'))	      
      END
	  ELSE
	  BEGIN
	      RAISERROR('PESSOA NAO LOCALIZADA', 16, 1)
	  END
   END TRY
   BEGIN CATCH
         SET @XML = (SELECT '' AS IDAGENDA, '' AS DTDIGITACAO, '' AS DTINICIO, '' AS DTFIM, '' AS ATIVIDADE, '' AS DETALHE, ERROR_MESSAGE() AS RETORNO
		                FOR XML PATH ('AGENDA'))
   END CATCH

  
   SELECT @XML AS RETORNO
END

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.