Noticias Weblogs Foros Wiki Código

RecorteX

» Sql
476 usuarios y 237 recortes de código
Usuario

Contraseña
Crear cuenta
Estás viendo los recortes de la etiqueta Sql

RSS
Recortes: 17

Etiquetas relacionadas:
Sqlserver
columna
existe
tabla
procedimientos
database
Oracle
encriptacion
case
texto
procedures
java
datos
almacenados
stored
passwords
exist
vbnet
registros
jdbc
dentro
base
sysobjects
PHP
concatenar
where
server
libre
duplicados
buscar
plsql
groupby
csharp
sp
mssql
eliminar
busqueda
table
ID

Concatenar varias filas en una columna con Oracle

Función para poder seleccionar el texto de varias filas en una única columna. Funciona como una función de grupo.
 
CREATE OR REPLACE FUNCTION rowconcat(q IN VARCHAR2) RETURN VARCHAR2 IS
  ret  VARCHAR2(4000);
  hold VARCHAR2(4000);
  cur  sys_refcursor;
BEGIN
  OPEN cur FOR q;
  LOOP
    FETCH cur INTO hold;
    EXIT WHEN cur%NOTFOUND;
    IF ret IS NULL THEN
      ret := hold;
    ELSE
      ret := ret || ',' || hold;
    END IF;
  END LOOP;
  RETURN ret;
END;
/
 
Ejemplo
 
SQL> SELECT rowconcat('SELECT dname FROM dept') AS departments
  2    FROM dual;
 
DEPARTMENTS
--------------------------------------------------------------------------------
ACCOUNTING,RESEARCH,SALES,OPERATIONS
 
Encontrado en http://orafaq.com/faq/map_rows_to_a_column

Layout rapido para crear SP (Stored Procedures)

Aqui anexo un layout rapido para crear y alterar SP o procedimientos almacenados en SQL
 
CREATE PROCEDURE nombredelsp (@parametro1 int, @parametro2 varchar(10), @parametro3 integer)
AS
begin   /*
             Descripcion del sp
	*/
	/*
             Aqui generalmente incluyo las declaraciones de las variables para
             Hacer pruebas
	*/
        /*   En esta parte va el procedimiento    */
END
 
Y para actualizar solo se cambia el
CREATE
 
como
ALTER
 

Case dentro del where

Que cosa tan rara! un CASE dentro de un WHERE! pero si es posible y yo lo tuve que utilizar una vez. Espero que esto les resuelva la vida un poco.
 
 SELECT * 
 FROM tabla_s WHERE
 columna = case 
  when condicion then consecuencia 
  [when condicion then consecuencia]*
  [else consecuencia]* end
 

Encontrar un objeto en nuestra base de datos

Muchas veces nos podemos perder en una base de datos muy grande, y al intentar buscar perdemos mas el tiempo haciendolo en el Enteprise manager. Creo que sera mas facil ejecutar este query y segun los resultados encontraremos lo que buscabamos. Exito!
 
 SELECT name FROM sysobjects WHERE name LIKE '%loquebuscamos%'
 

Determinar los atributos derivados en una tabla de sql server

 
  SELECT b.name AS tabla, a.name AS columna
           FROM syscolumns a INNER JOIN sysobjects b
           ON a.id=b.id
           WHERE b.name='nombretabla'
           AND a.iscomputed=1
 

Eliminar registros repetidos

Supongamos que tenemos una tabla con emails, y que algunos pueden estar repetidos, queremos hacer un "borrado selectivo" y eliminar solo las repeticiones.
 
DELETE FROM t_table WHERE id IN (SELECT id FROM t_table main WHERE id > (SELECT min(id) FROM t_table WHERE id <> main.id AND Email = main.Email))
 

Llamar a un procedimiento almacenado

Aquí hay un ejemplo que trata prácticamente todos los casos en la ejecución de un procedimiento almacenado usando JDBC: parámetros de entrada y salida, retorno de resultados, etc.
 
package DBTest;
 
import java.sql.*;
 
public class JdbcTest {
 
    private String          msDbUrl = "jdbc:odbc:ms";
    private String          msJdbcClass = "sun.jdbc.odbc.JdbcOdbcDriver";
    private Connection      mcDbAccess;
    private CallableStatement       msProcedure;
 
    public JdbcTest() {
        try {
            Class.forName( msDbUrl ).newInstance();
            mcDbAccess = DriverManager.getConnection( msJdbcClass, "milestone", "milestone" );
            msProcedure = mcDbAccess.prepareCall(
                "{? = call sp_sav_Bom_Header( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ) }"
            );
            msProcedure.registerOutParameter( 1, java.sql.Types.VARCHAR );
            msProcedure.setInt( 2, -1 );
            msProcedure.setInt( 3, 39 );
            msProcedure.setString( 4, "format" );
            long ltTest = new java.util.Date().getTime();
            System.out.println( "Today: " + ltTest );
            msProcedure.setTimestamp( 5, new Timestamp( ltTest ) );
            msProcedure.setString( 6, "type" );
            msProcedure.setString( 7, "submitter" );
            msProcedure.setString( 8, "email" );
            msProcedure.setString( 9, "phone" );
            msProcedure.setString( 10, "comments" );
            msProcedure.setString( 11, "label" );
            msProcedure.setInt( 12, 52 );
            msProcedure.setBoolean( 13, true );
            msProcedure.setBoolean( 14, false );
            msProcedure.setInt( 15, 53 );
            msProcedure.setString( 16, "runtime" );
            msProcedure.setString( 17, "configuration" );
            msProcedure.setBoolean( 18, true );
            msProcedure.setBoolean( 19, false );
            msProcedure.setString( 20, "special instructions" );
            msProcedure.setInt( 21, 54 );
 
            ResultSet lrsReturn = null;
            System.out.println( "Execute: " + (lrsReturn = msProcedure.executeQuery() ) );
            while( lrsReturn.next() ) {
                System.out.println( "Got from result set: " + lrsReturn.getInt( 1 ) );
            }
            System.out.println( "Got from stored procedure: " + msProcedure.getString( 1 ) );
        } catch( Throwable e ) {
            e.printStackTrace();
        }
    }
 
    public static void main(String[] args) {
        new JdbcTest();
    }
}
 
info@recortex.com - Proyecto: Juanjo Navarro, 2006 - Diseño: Albin - Información legal y técnica