Ir para conteúdo
Fórum Script Brasil
  • 0

Procedures no SQL Server


ursolouco

Pergunta

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 ? :blink: Eu também não..... :rolleyes:

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:
<?php
/**

PDO para SQL Server - Driver nativo da Microsoft

@date: 2010-07-16
@autor: Wellington Rodrigues <wellingtonbr@gmail.com>

1) Baixar driver nativo http://www.microsoft.com/sqlserver/2005/en/us/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('<pre>%s</pre>', 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('<h1>%s</h1>', $e->getMessage());
    printf('<h1>%s</h1>', $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

Editado por ursolouco
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...