[EMAIL PROTECTED] escribió:

Hola Foro. Estoy haciendo una prueba para trabajar con SQL dinamico y no hay manera, a ver si me podeis echar una mano. En principio no hace la seleccion y el SQLCOD = -514  Os paso el pequeño programa de pruebas. Compilo con commit *none . hasta que no hemos pasado a V5r3 no he podido hacer nada con sql embebido y esta prueba es basándome en ejemplos que habeis enviado al Foro. La misma seleccion en estático funciona bien.

FFartic IF E k disk FProvartic O a E disk D @empresa S 3 0 Inz(10) D @situac S 1 Inz('A') D @categoria S 2 Inz('BR') D Seletq S 300 * C EVAL Seletq= 'select arcodi, arnomb, - C from fartic - C where arempr=:@empresa and arsitu=:@situac - C and arcate=:@categoria' À C/Exec sql À C+ PREPARE stmt FROM :seletQ C/end-exec À * À C/EXEC SQL À C+ DECLARE C1 CURSOR FOR Stmt C/END-EXEC À * À C/Exec sql À C+ open C1 À C/end-exec À * À À C Dow sqlcod <>100 and sqlcod>=0 À¯---------------1-. C/Exec sql À | C+ FETCH NEXT FROM C1 INTO :prcodi, :prnomb C/end-exec À | À C If sqlcod<>100 and sqlcod>=0 À¯-------------2-. | C Write Provesr À | | À C Endif À®-------------2-' | À C Enddo À®---------------1-' C/Exec sql À C+ CLOSE C1 C/end-exec À C Seton Lr À 
No puedes emplear variables del lenguaje de esa forma en sql dinámico. En su lugar, utiliza el valor de éstas mismas variables en la sentencia, o bien prepara una sentencia con parámetros (por ejemplo, 'where arempr = ? '), y luego ejecútala pasándole dichos parámetros (creo recordar que para un cursor sería 'declare c1 cursor for stmt using :variable')


--


Saludos.

Fernando Pérez 

Cerámica Saloni. Dpto. Sistemas

begin:vcard
fn;quoted-printable:Fernando P=C3=A9rez
n;quoted-printable:P=C3=A9rez;Fernando
org:;Sistemas
email;internet:[EMAIL PROTECTED]
tel;work:Ext. 627
x-mozilla-html:TRUE
version:2.1
end:vcard

Responder a