USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Dicas

  Visual Basic    (Banco de Dados)

Título da Dica:  Migrando de Sql Server para Oracle
Postada em 6/10/2003 por ^HEAVY-METAL^            

SQL TO ORACLE

Este artigo visa dar algumas dicas para quem vai migrar, ou conhece o SQL Server e deseja conhecer um pouco de ORACLE.

Ai vai uma lista legal:

1. Download do Cliente .net "ORACLECLIENT"

.NET Microsoft OracleClient
(caso este link não funcione, pois a microsoft pode mudar o endereço URL, entre em http://msdn.microsoft.com , em download procure por "OracleClient")

Importante , voce deve instalar o Cliente original da ORACLE 8i ou 9i para que este componente funcione. De acordo com a Microsoft, ele eh muito mais rapido que o cliente ORACLE integrado do framework.net e o acesso via ODBC

2. IMPORTS para os Bancos

SQL Server:
Imports System.Data.SqlClient

ORACLE:
Imports System.Data.OracleClient

3. CLIENTES PARA BANCO DE DADOS (ASP.NET em VB).

sqlClient (Nativo do ASP.NET)
' conexão ->
Dim cn as New SqlConnection("Server=(local);DataBase=db1;uid=sa;pwd=xuxu")

'command ->
Dim cmd as New SqlCommand(sql, cn)

' dataAdapter ->
Dim da as New SqlDataAdapter(sql, cn)

' Populando um DataTable ->
Dim dt as New DataTable()
da.Fill(dt)

OracleClient (Deve ter no minimo Cliente 8i, mais download do Cliente ORACLE para .NET)
' conexão ->
Dim cn as New OracleConnection("Data Source=db1;User ID=user1;Password=xuxu;")

' command ->
Dim cmd as New OracleCommand(sql, cn)

' dataAdapter ->
Dim da as New OracleDataAdapter(sql, cn)

' Populando um DataTable ->
Dim dt as New DataTable()
da.Fill(dt)

4. Update do banco usando conceito de Parameters .. (ASP.NET)
(Sem usar stored procedure no banco)

SQL SERVER:

Dim sql as String = "UPDATE CLIENTES SET NOME = @NOME WHERE CLI_ID = @CLI_ID"
Dim cn as New SqlConnection("Server=(local);DataBase=db1;uid=sa;pwd=xuxu")
Dim cmd as SqlCommand(sql, cn)
cmd.Parameters.Add("@NOME", SqlDbType.NVarChar, 50).Value = "João da Silva"
cmd.Parameters.Add("@CLI_ID", SqlDbType.Int).Value = 20
cn.Open()
cmd.ExecuteNoQuery()
cn.Close()

ORACLE:

Dim sql as String = "UPDATE CLIENTES SET NOME = :pNOME WHERE CLI_ID = :pCLI_ID"
Dim cn as New OracleConnection("Data Source=db1;User ID=user1;Password=xuxu;")
Dim cmd as OracleCommand(sql, cn)
cmd.Parameters.Add(":pNOME", OracleType.VarChar, 50)
cmd.Parameters(":pNome").Value = "João da Silva"
cmd.Parameters.Add(":pCLI_ID", OracleType.Int32)
cmd.Parameters(":pCLI_ID").Value = 20
cn.Open()
cmd.ExecuteNoQuery()
cn.Close()

5. Selecionando TOP n ...

SQL SERVER: SELECT TOP 50 * FROM CLIENTES

ORACLE: SELECT * FROM CLIENTES Where rownum <= 50 ;

6. Update ou Insert de um campo DateTime

SQL SERVER:
Update CLIENTES
set Cad_date = '2002-12-31'
Where CLI_ID = 2

Insert Into CLIENTES (NOME, Cad_date)
Values ('João da Silva', '2002-12-31')

ORACLE:
Update CLIENTES
Set Cad_date = TO_DATE('2002-12-31', 'YYYY-MM-DD')
Where CLI_ID = 2;

Insert Into CLIENTES(NOME, Cad_date)
Values ('João da Silva', TO_DATE('2002-12-31', 'YYYY-MM-DD'));

(*) Observe que o SQL Server entende e converte o formato ORDERED yyyy-MM-dd sem problemas. Ja o ORACLE fica dependente da configuração do Cliente e não entende o formato yyyy-MM-dd como padrao, se voce entrar a data no formato 01/02/2002 ele pode ate entender , mais quem vai garantir que eh 2 de Jan de 2002 ou 1 de Fev de 2002 ?
Este eh o motivo de se usar o formato ORDERED (yyyy-MM-dd) nos dois exemplos !

Com certeza a melhor forma de se fazer update ou insert e usar o recurso de cmd.Parameters.Add , pois não ocorre problemas de conversão ou caracteres inválidos como " ou ' .


T+,
 


CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página