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 ...

Participe do fórum, é rápido e fácil

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 ...

Mundo Retro

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

    Procedures no SQL Server, Usando driver nativo da Microsoft

    SystemX
    SystemX
    Membro
    Membro


    Posts Posts : 10
    Respeito Respeito : 0

    Procedures no SQL Server, Usando driver nativo da Microsoft Empty Procedures no SQL Server, Usando driver nativo da Microsoft

    Mensagem por SystemX 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 maio 14, 2024 8:23 am