Executar uma SP - Stored Procedure - do Sybase é uma necessidade que pode aparecer eventualmente no nosso dia-a-dia de desenvolvedor.
Sybase's PROCs
VBA Access - Execute Stored Procedure with VBA in Sybase
A seguir, forneço um exemplo de um Stored Procedure em Sybase e o código em VBA para criar e executar essa procedure, comentado linha a linha. A procedure será simples, retornando registros de uma tabela fictícia chamada `Clientes`. Substitua pela lógica e tabelas conforme sua necessidade.
Stored Procedure no Sybase
SQL:
CREATE PROCEDURE sp_ListaClientes
@Cidade VARCHAR(50)
AS
BEGIN
SELECT ClienteID, Nome, Cidade
FROM Clientes
WHERE Cidade = @Cidade
ORDER BY Nome;
END;
Essa procedure aceita um parâmetro `@Cidade` e retorna todos os clientes da cidade especificada.
VBA para Criar e Executar a Procedure
O código VBA a seguir realiza as seguintes ações:
1. Conecta ao banco de dados Sybase usando ADO.
2. Verifica se a procedure já existe (e a exclui).
3. Cria a nova procedure.
4. Executa a procedure e retorna os dados formatados no Excel.
VBA:
Sub CriarEExecutarProcedureSybase()
' Variáveis de conexão
Dim Conn As Object
Dim Cmd As Object
Dim RS As Object
Dim strSQL As String
Dim ws As Worksheet
Dim i As Integer
' Define a planilha para saída dos dados
Set ws = ThisWorkbook.Sheets("Resultados")
ws.Cells.Clear ' Limpa os dados existentes na planilha
' Inicia a conexão ADO
Set Conn = CreateObject("ADODB.Connection")
Conn.ConnectionString = "Driver=Sybase ASE ODBC Driver;Server=myServer;Database=myDatabase;UID=myUser;PWD=myPassword;"
Conn.Open
' Verifica se a procedure existe e a exclui
strSQL = "IF EXISTS (SELECT 1 FROM sysobjects WHERE name = 'sp_ListaClientes' AND type = 'P') " & _
"DROP PROCEDURE sp_ListaClientes"
Set Cmd = CreateObject("ADODB.Command")
Cmd.ActiveConnection = Conn
Cmd.CommandText = strSQL
Cmd.Execute
' Cria a nova procedure
strSQL = "CREATE PROCEDURE sp_ListaClientes " & _
"@Cidade VARCHAR(50) AS BEGIN " & _
"SELECT ClienteID, Nome, Cidade FROM Clientes WHERE Cidade = @Cidade ORDER BY Nome; END;"
Cmd.CommandText = strSQL
Cmd.Execute
' Executa a procedure
Set Cmd = CreateObject("ADODB.Command")
Cmd.ActiveConnection = Conn
Cmd.CommandType = 4 ' Procedimento armazenado
Cmd.CommandText = "sp_ListaClientes"
' Define o parâmetro
Cmd.Parameters.Append Cmd.CreateParameter("@Cidade", 200, 1, 50, "São Paulo")
' Executa a consulta
Set RS = Cmd.Execute
' Formata os resultados no Excel
If Not RS.EOF Then
' Cabeçalhos
For i = 1 To RS.Fields.Count
ws.Cells(1, i).Value = RS.Fields(i - 1).Name
Next i
' Dados
ws.Cells(2, 1).CopyFromRecordset RS
Else
MsgBox "Nenhum registro encontrado.", vbInformation
End If
' Fecha os objetos
RS.Close
Conn.Close
' Limpa objetos
Set RS = Nothing
Set Cmd = Nothing
Set Conn = Nothing
MsgBox "Procedure executada com sucesso!", vbInformation
End Sub
Explicação do Código VBA
1. Conexão ao Sybase:
- `Conn.ConnectionString`: Insira os detalhes corretos de conexão (servidor, banco de dados, usuário e senha).
2. Verificação e exclusão da procedure existente:
- Usa um comando SQL para verificar a existência de uma procedure chamada `sp_ListaClientes` e, se existir, excluí-la.
3. Criação da procedure:
- Define o comando SQL para criar a procedure no banco.
4. Execução da procedure:
- Usa `Cmd.CommandType = 4` para indicar que é um stored procedure.
- Adiciona o parâmetro `@Cidade` com o método `Cmd.Parameters.Append`.
5. Resultado no Excel:
- Cabeçalhos das colunas são inseridos na linha 1 da planilha.
- Dados da consulta são inseridos a partir da linha 2 com `CopyFromRecordset`.
Configurações necessárias
- Certifique-se de ter o ODBC Driver para Sybase instalado.
- Ajuste as credenciais na string de conexão.
- Crie uma planilha chamada `Resultados` no Excel para visualizar os dados.
Teste e adapte conforme seu ambiente.
Clique aqui e nos contate via What's App para avaliarmos seus projetos
Série de Livros nut Project
Nenhum comentário:
Postar um comentário