2011-06-02 22 views
17

¿Alguien sabe cómo ejecutar el siguiente código de SQL Server en DB2?Declarar una variable en DB2 SQL

Estoy convirtiendo scripts de SQL Server para que se ejecuten en un sistema DB2 y tengo algunos problemas para resolver el uso de variables en DB2.

T-SQL código

Esto, obviamente, no es el código real, pero funciona bien como un ejemplo.

DECLARE @INPUT_VALUE INT 
SET INPUT_VALUE = 4756 

SELECT * 
FROM TABLE1 
WHERE TABLE1.COLUMN1 = @INPUT_VALUE 

Respuesta

18

Me imagino que forum posting, que cito a continuación, debería responder la pregunta.


dentro de un procedimiento, función, o activador, o en una sentencia de SQL dinámico (incrustado en un programa de acogida):

BEGIN ATOMIC 
DECLARE example VARCHAR(15) ; 
SET example = 'welcome' ; 
SELECT * 
FROM tablename 
WHERE column1 = example ; 
END 

o (en cualquier entorno):

WITH t(example) AS (VALUES('welcome')) 
SELECT * 
FROM tablename, t 
WHERE column1 = example 

o (aunque probablemente esto no es lo que desea, ya que la variable debe crearse solo una vez, pero todos pueden usarla posteriormente, aunque su contenido será privado por usuario):

CREATE VARIABLE example VARCHAR(15) ; 
SET example = 'welcome' ; 
SELECT * 
FROM tablename 
WHERE column1 = example ; 

+0

Michael, creo que en el primer ejemplo parte del código se dejó. ¿Parece que está configurando una variable que no ha sido declarada o creada? Ejecuté este código usando una tabla y un nombre de columna válidos y obtuve un error a cambio. –

+0

Creo que tienes razón ... Tampoco pude hacer que funcione, así que edité la pregunta para eliminarla. –

+0

Me gusta el último para si necesito ejecutar un script genérico con algunas variables de entrada. ¿Estoy en lo cierto al decir que la variable existe durante la vida de la transacción? – ESP

7

vengo de un fondo de SQL Server también y pasó las últimas 2 semanas encontrar la manera de ejecutar scripts de este tipo en IBM Data Studio. Espero eso ayude.

CREATE VARIABLE v_lookupid INTEGER DEFAULT (4815162342); --where 4815162342 is your variable data 
    SELECT * FROM DB1.PERSON WHERE PERSON_ID = v_lookupid; 
    SELECT * FROM DB1.PERSON_DATA WHERE PERSON_ID = v_lookupid; 
    SELECT * FROM DB1.PERSON_HIST WHERE PERSON_ID = v_lookupid; 
DROP VARIABLE v_lookupid; 
Cuestiones relacionadas