Mundo Retro

Olá CONVIDADO,

Seja bem Vindo ao Mundo Retro.

Obrigado pela visita,
Aqui você encontra papéis de parede, capas de filmes, ajuda, detonados de jogos de xbox 360, ps3 e ps2 e muito mais ...

Procedures no SQL Server, Usando driver nativo da Microsoft

Compartilhe
SystemX
SystemX
Membro
Membro

Posts Posts : 10
Respeito Respeito : 0

Procedures no SQL Server, Usando driver nativo da Microsoft

Mensagem por SystemX em Sex Jun 08, 2012 9:33 pm

Salve,

Bom, estamos aqui, em mais uma noite em que aparece aquele
problema chato que toma alguns minutos do tempo e sabedoria que deveria
sempre empregada no desenvolvimento. Entendeu ? Eu também não.....

Bom, direto ao assunto, como executar stored procedure no SQL Server 2005 Express usando PDO desenvolvido pela Microsoft ?

Mãos a obra:

Antes de começar, execute o codigo abaixo no seu SQL Server 2005 Express:

USE MASTER
GO

-- DROP DATABASE DBTEMP
-- GO

CREATE DATABASE DBTEMP
GO

USE DBTEMP
GO

CREATE TABLE DEMO
(
ID INT NOT NULL IDENTITY,
NOME VARCHAR(255) NULL,
DATA_REGISTRO DATETIME NULL DEFAULT CURRENT_TIMESTAMP,
IDENTIFICADOR UNIQUEIDENTIFIER NULL,
CONSTRAINT PK_DEMO PRIMARY KEY(ID),
CONSTRAINT UQ_DEMO_IDENTIFICADOR UNIQUE(IDENTIFICADOR)
)
GO

INSERT INTO DEMO(NOME, IDENTIFICADOR) VALUES(NULL, NEWID())
INSERT INTO DEMO(NOME, IDENTIFICADOR) VALUES(NULL, NEWID())
INSERT INTO DEMO(NOME, IDENTIFICADOR) VALUES(NULL, NEWID())
INSERT INTO DEMO(NOME, IDENTIFICADOR) VALUES(NULL, NEWID())
INSERT INTO DEMO(NOME, IDENTIFICADOR) VALUES(NULL, NEWID())
GO

SELECT ID, NOME, IDENTIFICADOR, DATA_REGISTRO FROM DEMO ORDER BY ID DESC
GO

CREATE PROCEDURE GETDEMO(@ID INT) AS
SELECT
DM.ID,
DM.NOME,
DM.IDENTIFICADOR,
DM.DATA_REGISTRO
FROM
DEMO DM
WHERE
DM.ID = @ID;
GO

EXEC GETDEMO 2
GO


Se tudo correr bem, vamos adiante com o script php abaixo:

/**

PDO para SQL Server - Driver nativo da Microsoft

@date: 2010-07-16
@autor: Wellington Rodrigues

1) Baixar driver nativo http://www.microsoft...PHP-Driver.aspx

2) Jogar as dlls (php_sqlsrv_52_ts_vc6.dll e php_pdo_sqlsrv_52_ts_vc6.dll) dentro dos diretórios:

C:\php
C:\php\ext
C:\windows\system
C:\windows\system32

3) Adicionar este trecho no php.ini

;**************************************
;NOVO DRIVER NATIVO DO SQL SERVER
;**************************************
extension=php_sqlsrv_52_ts_vc6.dll
extension=php_pdo_sqlsrv_52_ts_vc6.dll
;**************************************
;NOVO DRIVER NATIVO DO SQL SERVER
;**************************************

4) Reinciar o apache

5) Rodar phpinfo e conferir os itens PDO

OBS: Na minha máquina já existia a versão do SQL Server 2008 Native Client ODBC,
talvez seja necessário a instalação do mesmo em seu computador para
um funcionamento correto.

*/

if(strstr($_SERVER['QUERY_STRING'],'debug'))
{
highlight_file(__FILE__);
exit();
}

function depurar($var, $e = true)
{
printf('%s', var_export($var,true));
if(!$e)
exit();
}

try
{
$dsn = 'sqlsrv:server=HOME\\SQLEXPRESS;Database=DBTEMP';
$username = 'sa';
$password = 'x000000x';
$pdo = new PDO($dsn, $username, $password);
$pdo->setAttribute(PDO::ATTR_CASE, PDO::CASE_NATURAL);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stm = $pdo->prepare('EXEC GETDEMO ?');
$stm->setFetchMode(PDO::FETCH_ASSOC);
$param = 1;
$stm->bindParam(1, $param);
$stm->execute();
$data = $stm->fetch();
depurar($data);
}
catch(Exception $e)
{
printf('%s

', $e->getMessage());
printf('%s

', $e->getTraceAsString());
}


Se não apresentar mensagem de erro, seu PHP já estará pronto para trabalhar usando o driver desenvolvido pelo Microsoft.

Um grande abraço.

    Data/hora atual: Ter Mar 26, 2019 1:02 pm