Mostrando entradas con la etiqueta oracle. Mostrar todas las entradas
Mostrando entradas con la etiqueta oracle. Mostrar todas las entradas

Nota rápida sobor SQL Loader

Cada vez que me teño que por con SQL Loader non me lembro da maioría das cousas e perdo moito tempo, vou usar esta entrada para reflexar o que uso máis a miúdo

Sacado da documentación de Oracle


  • CHARACTER SET: para especificar a codificación dos datos de entrada, no meu caso xeralmente UTF8
  • FIELDS TERMINATED BY: para especificar como están separados os campos no ficheiro de entrada, WHITESPACES, 'caracter', X'codigo hexadecimal'
  • se poden usar funcións ao carón dos nomes de campo, pero teñen que ir entre ", útil para convertir tipos de datos
  • SKIP: para indicar o número de filas que se deben excluir do procesamento do ficheiro (para eliminar cabeceiras e demáis)
  • WHEN: útil para filtrar rexistros que non interesen
  • FILLER: non cargamos a columna na táboa (está no ficheiro pero non nos interesa)
  • EXPRESSION: para poder asignar unha expresión SQL a unha columna

SQL Loader é unha ferramenta moi flexible que nos permite facer moi doadas as cargas de ficheiros en texto plano, pero ás veces é un pouco complicado chegar a collerlle o punto. Agora unha pequena plantilla do ficheiro de control

Parámetros opcionais en Oracle PL/SQL

Segundo a documentación de Oracle sobor de subprograms en PL/SQL non hai parámetros opcionais. O que si que podemos facer é darlle un valor por defecto, así, se non o pasamos automáticamente se lle asignaría un valor co que funcionaría coma un parámetro por defecto

Saúdos

Erro en cursor de Oracle (missing right parenthesis)

Nalgunhas ocasións ao ter que actualizar un feixe de filas dunha táboa (ou varias) é necesario facer uso dun cursor para poder facer os cálculos pertinentes e poder acadar o resultado desexado

Levo anos usándoos e nunca tivera este problema (sí moitos outros), o caso é que ao executar o PL/SQL dame un erro ORA-00907 missing right parenthesis na definición do cursor.



Revisando o cursor vexo que a consulta está ben e se executa sen problemas fora do cursor, a consulta é a seguinte



Se lle quito a parte do order by o cursor se executa correctamente, pero necesito ese order by, buscando por internet cheguei a esta páxina onde comentan que os parénteses non son necesario, efectivamente quitando os parénteses xa funciona, pero nunca antes me tivera pasado e sempre os usaba por unha cuestión de claridade e lexibilidade do código

En fin por se vos serve de axuda

Entrada truncada a X caracteres en Oracle


Se algunha vez ao lanzar un proceso pl/sql dende sqlplus te atopas con algún erro similar o que deberías facer é buscar algún espacio ao comenzo da liña, algúns editores manteñen o último identado que fas co que se che pode escapar, por exemplo
DECLARE
declaración variables ...
BEGIN
código do pl/sql
 END; -- aquí temos un espacio antes do END
  / -- aquí outro espacio antes do fin do ficheiro

Neste caso, na versión 8i este código podería non executarse correctamente e dar un erro similar ao do título do post. O caso é que na versión 10g non parece funcionar igual xa que o mesmo ficheiro executado co sqlplus 8i e o 10g no primeiro non funciona e no segundo sí

Agardo que vos sexa de axuda

¿Cómo comprobar se falta algún elemento dunha lista consecutiva?

Levo un tempo entrando no proceloso mundo dos DW, e para iso hai que comezar coa fase de ETL, nesas andaba cando deime conta que necesito verificar se os datos foron cargados correctamente, como non ando moi ben de tempo o que fixen foi unha consulta que a lo menos me diga se me falta algunha data por cargar, logo habería que verificar que nesa data se cargaron todos os datos (inda que tal e como o teño montado se me falla algún dato debería fallar todo o día)

Logo de botarlle unha pensada lembreime da pseudocolumna rownum (distinta do rowid), e pensei que podería serivirme para conseguir unha lista de días  e machealos contra as distintas datas da miña tabla, a consulta resultado é a seguinte



É unha consulta moi sinxela, pero a min polo momento me funciona e coido que pode ser de utilidade

Un saúdo

ODBC e Procedemento Almacenado

Hoxe tiven que poñerme a mirar como executar un procedemento almacenado nunha bbdd Oracle dende un ODBC para un proxecto no que ando metido no chollo, a verdade é que é moi sinxeolo e so fai falla mirar un pouco a axuda e aplicar a lóxica.

De entrada para executar un procedemento almacenado dende SQL Plus o único que tes que facer é poñer

exec nom_stored_procedure([param1,param2, ...])

e xa vai, se queres executar unha función o único que teríamos que facer é executar unha consulta contra a táboa virtual dual

SELECT function([param1, param2, ....])
FROM DUAL;

Pero se o que queremos é executalo dende un acceso ODBC a cousa cambia, se executamos a primeira maneira o resultado é o seguinte



Mirando a axuda do ODBC dinos que temos que executar a sentencia entre corchetes e chamar a función cun call en troques de cun exec, tal que así

{call nom_stored_procedure([param1, param2, ....])}

Se o facemos así xa non temos erro, o que pasa é que non se executa o procedemento almacenado co que tampouco nos serve, dándolle un pouco á cachola pensei que se ía entre corchetes tal vez sería porque agardaba que algo chamara a esa sentencia, velaí estaba

exec {call nom_stored_procedure([param1, param2, ....])}

Así si, agora si que se executou o procedemento almacenado, cando menos curioso

Agardo que lle sirva a alguén e non teña que perder esas dúas horas que eu perdín buscando a solución