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.
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.
Sáb Fev 27, 2016 9:16 am por iLuc
» Melhores apps para Android
Sex Abr 04, 2014 9:37 pm por iLuc
» [PS2] Missões Bully
Qui Abr 03, 2014 1:53 pm por Luckii
» Dificuldades
Qui Abr 03, 2014 1:44 pm por Luckii
» [SUGESTÕES] Reaberto
Qui Abr 03, 2014 1:14 pm por iLuc
» XnRetro [DOWNLOAD]
Qui Abr 03, 2014 1:06 pm por iLuc
» [NOVAS] Menu iniciar voltará no Windows 8
Qui Abr 03, 2014 7:15 am por iLuc
» [DESIGN] PEDIDOS
Qua Abr 02, 2014 8:52 pm por iLuc
» [NOVIDADE] PS4
Qua Abr 02, 2014 8:50 pm por Crizzy