|
|
|
|
|
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+,
|
|
|
|
|