DB2 - cómo ejecutar una consulta de selección ad hoc, con un parámetro de IBM System i Access para la herramienta de interfaz gráfica de usuario de Windows

StackOverflow https://stackoverflow.com/questions/2336820

Pregunta

Me gustaría correr un poco especial de composición restringida declaraciones en la herramienta IBM System i Navigator para DB2 utilizando una variable que declaro.

Por ejemplo, en el mundo de SQL Server que podría hacerlo fácilmente en la ventana de consulta SQL Server Management Studio, así:

DECLARE @VariableName varchar(50);
SET @VariableName = 'blah blah';

select * from TableName where Column = @VariableName;

¿Cómo puedo hacer algo similar en la herramienta I Navigator IBM System?

¿Fue útil?

Solución

me encontré con este post durante la búsqueda de la misma pregunta. Mi compañero de trabajo proporcionó la respuesta. De hecho, es posible declarar variables en una instrucción SQL ad hoc en Navigator. Esta es la forma en que se realiza:

CREATE OR REPLACE VARIABLE variableName VARCHAR(50);
SET variableName = 'blah';
SELECT * FROM table WHERE column = variableName;
DROP VARIABLE variableName;

Si no dejar caer el nombre de la variable que va a colgar alrededor hasta quien sabe cuando ...

Otros consejos

En este momento, estamos trabajando en el mismo problema en el trabajo. Unfortunaly, llegamos a la conclusión de que esto no es posible. Estoy de acuerdo, sería muy bueno, pero simplemente no funciona de esa manera. inavigator no soporta SET o definir. Puede hacerlo en SQL incrustado pero esto no es de SQL incorporado. Incluso si se crea un documento separado (xxx.sql), entonces necesitará abrir este documento para ejecutar el script lo que hace que sea un script interactivo (es decir, no se permite DECLARE SECTION).

Como alternativa, en la pantalla de SQL / script puede utilizar CL: . Nada después de este prefijo se ejecuta como mandato CL. Es posible manipular las tablas (por ejemplo RNMF) de esta manera.

Como segunda alternativa, el iSeries hace de soporte de scripts Rexx (predeterminado instalado en el sistema operativo). Rexx es buena lenguaje de script dinámico y lo hace de soporte de SQL incorporado. Lo he hecho muchas veces y funciona muy bien. Incluso he creado guiones para nuestro entorno de producción.

Hay que crear un script 'por defecto' con un ejemplo PREPARE y declaración CURSOR y copiar a voluntad. Con ese guión se puede jugar. Consulte el manual de REXX para la sintaxis correcta de exec-SQL. Además, no tiene entrada y salida estándar, pero puede utilizar 'OVRDBF' a punto a una tabla de base de datos (archivo físico). Déjame saber si necesita un script de ejemplo REXX.

Tenga en cuenta que el manual "SQL programación integrado" tiene ejemplos REXX.

Aquí hay un par de otras alternativas.

Transferencia de datos de la herramienta - Puede ejecutar la transferencia de datos de iSeries herramienta desde la línea de comandos (RTOPCB). En primer lugar, ejecute la versión de interfaz gráfica de usuario y crear un archivo de definición. Si edita este archivo con un editor de texto, se verá que esto es sólo un archivo INI pasado de moda y se puede encontrar fácilmente la línea con la consulta en el mismo. A partir de ahí, se podría escribir un archivo por lotes o de otra manera pre-procesar el archivo de texto que le permite manipular la consulta antes de presentarlo a la herramienta de consulta.

QSHELL - Si puede iniciar sesión en el iSeries de forma interactiva, entonces usted puede encontrar el ambiente más familiar que QSHELL CL o REXX (aunque REXX es una especie de diversión). QSHELL es un entorno POSIX que se ejecuta en el iSeries. Utilice el comando para iniciar STRQSH QSHELL. Usted puede tener ksh o CSH como una concha. Dentro QSHELL, hay un comando llamado "DB2" que presenta las consultas. Por lo tanto, usted debe ser capaz de hacer algo como esto dentro de QSHELL:

system> VariableName = 'blah blah'
system> db2 "select * from TableName where Column = \'$VariableName\'"

Es posible que tenga que jugar con las cotizaciones para obtener ksh para pasarlos correctamente.

Además, en el interior QSHELL, usted debe tener una instalación completa de Perl que le permitirá utilizar DBI para obtener los datos.

Algunas otras formas de interactuar con los datos sobre el iSeries: consulta del cliente con Python a través de ODBC; consulta del cliente con Jython través de JDBC; Jython instalar directamente en el iSeries y luego consulta a través de JDBC.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top