Blz Galera
Precisando de uma ajuda urgente...
Estou tentando fazer minha pagina de PHP rodar uma procedure mas das duas formas que estou tentando a pagina retorna erro, a procedure roda normalmente pelo sql server.
Ja verifiquei schema, parâmetros estão sendo enviados...
O select da Procedure roda em Link server para uma base oracle e alimenta uma base SQL server, porem necessita de dois parametros uma data e um ciclo.
Segue scripts
// =================inicio do script====================
<?php
session_start();
session_cache_expire(3000);
set_time_limit(3000);
ini_set(max_execution_time, '3600');
ini_set(max_input_time, '3600');
error_reporting( E_ALL);
include "conexaoSqlServer.php";
include "classes.php";
$ref_fat = $_POST['ref_fat'];
$ciclo = $_POST['ciclo'];
$ref_fatx = FormataDataInversoSemHifem($ref_fat);
//================Primeira Forma =======================
/* Preparar o recurso instrução
$Stmt = mssql_init("SP_ARQUIVO_CICLO_ATUAL",$conexao) or die("Erro Inicializacao Procesure");
/* Agora vincular os parâmetros para ela
mssql_bind($Stmt, "@ref_fat", $ref_fatx, SQLVARCHAR , FALSE) or die("Erro Parametro 1");
mssql_bind($Stmt, "@ciclo", $ciclo, SQLVARCHAR, FALSE) or die("Erro Parametro 2");
/* Agora executar o procedimento
mssql_query("SET ANSI_NULLS ON");
mssql_query("SET ANSI_WARNINGS ON");
mssql_execute($Stmt) or die("Erro de mssql_execute");
mssql_free_result($Stmt);
mssql_close($conexao);
echo mssql_get_last_message(); */
//================Segunda Forma =======================
$query = "exec SP_ARQUIVO_CICLO_ATUAL '$ref_fatx', '$ciclo'";
mssql_query("SET ANSI_NULLS ON");
mssql_query("SET ANSI_WARNINGS ON");
mssql_query($query,$conexao) or die("Erro Não Rodou");
//==============PROCEDURE SCRIPT====================
USE [Portal]
GO
/****** Object: StoredProcedure [dbo].[SP_ARQUIVO_CICLO_ATUAL] Script Date: 14/09/2015 18:25:15 ******/
Set ANSI_NULLS ON
Set ANSI_WARNINGS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[SP_ARQUIVO_CICLO_ATUAL](@ref_fat varchar(8), @ciclo varchar(10))
AS
declare @aux varchar(max)
--@ref_fat varchar(8) = '20150310', @ciclo varchar(2) = '10'
TRUNCATE TABLE tbl_arquivo_faturado
set @aux = 'SELECT * FROM OPENQUERY (DTBN, ''SELECT /*+ PARALLEL (CCI 8)*/ CCI.ACCT_NBR,CCI.SBSCRP_ID,S.ACCESS_NBR,S.SBSCRP_SVC_EXPR_DT,null as ACCESS_NBR_EFF_DT,null as ACCESS_NBR_ASGM_EXPR_DT,null REASON_CD,
CCI.CAPTN_CD,CCI.SVC_NAME,CCI.FNCL_ACCT_NBR,CCI.GEO_STATE_CD"UF_SBS",CCI.SVC_AGRMNT_SEQ_NBR,CCI.SVC_PRICE_SEQ_NBR,CCI.LAST_BILL_DT,CCI.CYCLE_CD,CCI.CHARGE_CR_AMT,
CCI.SVC_AGRMNT_EFF_DT,CCI.CHARGE_ITEM_START_DT,CCI.CHARGE_ITEM_END_DT,CCI.CHARGE_TYPE_CD
FROM CHARGE_CR_ITEM@PRODLK CCI, SBSCRP S
WHERE CCI.SBSCRP_ID = S.SBSCRP_ID
AND CCI.LAST_BILL_DT = ' + @ref_fat + '
AND CCI.CYCLE_CD = ' + @ciclo + '
AND CCI.FNCL_ACCT_NBR IN (''''SEGUROSACE000'''',''''SEGUROZURICH000'''',''''SEGMAPFRE.000'''')'')'
INSERT INTO tbl_arquivo_faturado
exec (@aux)