Weblogs Código

RecorteX

» sql
73 usuarios y 244 recortes de código
Usuario

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

RSS
Recortes: 18

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

Buscar si una tabla tiene campo identity, y saber cual es

Buscar si una tabla tiene campo identity, y saber cual es

 
dim @tabla  AS varchar(20)
SELECT @tabla='tablaabuscar'
SELECT o.name , c.name 
FROM syscolumns c, sysobjects o
WHERE c.STATUS & 128 = 128
AND o.id = c.id
AND o.name=@tabla
ORDER BY o.name
 

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();
    }
}
 
Proyecto: Juanjo Navarro, 2006 - Diseño: Albin