Record Employee type sqlRecord { tableNames = [["employee"]], keyItems = ["empnum"], defaultSelectCondition = #sqlCondition{ // no deje espacios entre #sql y el corchete aTableColumn = 4 -- iniciar cada componente SQL -- con un guión doble } } empnum decimal(6,0) {isReadonly=yes}; empname char(40); end
emp Employee;
Para obtener más detalles acerca de los registros y las sentencias implícitas SQL, consulte el apartado Soporte SQL.
empnum decimal(6,0); empname char(40);
empnum = 1; empname = "John";
try execute #sql{ insert into employee (empnum, empname) values (:empnum, :empname) }; onException myErrorHandler(8); end
empnum = 1;
open selectEmp with #sql{ select empnum, empname from employee where empnum >= :empnum for update of empname } into empnum, empname;
get next from selectEmp;
get next from selectEmp into empnum, empname;
El cursor se cierra automáticamente cuando se lee el último registro del conjunto de resultados.
VGVar.handleHardIOErrors = 1; try open selectEmp with #sql{ select empnum, empname from employee where empnum >= :empnum for update of empname } into empnum, empname; onException myErrorHandler(6); // salir del programa end try get next from selectEmp; onException if (sqlcode != 100) myErrorHandler(8); // salir del programa end end while (sqlcode != 100) empname = empname + " " + "III"; try execute #sql{ update employee set empname = :empname where current of selectEmp }; onException myErrorHandler(10); // salir del programa end try get next from selectEmp; onException if (sqlcode != 100) myErrorHandler(8); // salir del programa end end end // fin de while; el cursor se cierra automáticamente // cuando se ha leído la última fila del conjunto de resultados sysLib.commit();
VGVar.handleHardIOErrors = 1; try open selectEmp with #sql{ select empnum, empname from employee where empnum >= :empnum for update of empname } into empnum, empname; onException myErrorHandler(6); // salir del programa end try forEach (from selectEmp) empname = empname + " " + "III"; try execute #sql{ update employee set empname = :empname where current of selectEmp }; onException myErrorHandler(10); // salir del programa end end // fin de forEach; el cursor se cierra automáticamente // cuando se ha leído la última fila del conjunto de resultados onException // el bloque de excepción relacionado con forEach no se ejecuta si la condición // es "sqlcode = 100", así que evite la prueba "if (sqlcode != 100)" myErrorHandler(8); // salir del programa end sysLib.commit();
Record Employee type sqlRecord { tableNames = [["employee"]], keyItems = ["empnum"], defaultSelectCondition = #sqlCondition{ aTableColumn = 4 -- iniciar cada componente SQL -- con un guión doble } } empnum decimal(6,0) {isReadonly=yes}; empname char(40); end
emp Employee;
emp.empnum = 1; emp.empname = "John";
try add emp; onException myErrorHandler(8); end
emp.empnum = 1;
try get emp; onException myErrorHandler(8); end
try get emp singleRow; onException myErrorHandler(8); end
VGVar.handleHardIOErrors = 1; try open selectEmp forUpdate for emp; onException myErrorHandler(6); // salir del programa end try get next emp; onException if (emp not noRecordFound) myErrorHandler(8); // salir del programa end end while (emp not noRecordFound) myRecord.empname = myRecord.empname + " " + "III"; try replace emp; onException myErrorHandler(10); // salir del programa end try get next emp; onException if (emp not noRecordFound) myErrorHandler(8); // salir del programa end end end // fin de while; el cursor se cierra automáticamente // cuando se ha leído la última fila del conjunto de resultados sysLib.commit();
VGVar.handleHardIOErrors = 1; try open selectEmp forUpdate for emp; onException myErrorHandler(6); // salir del programa end try forEach (from selectEmp) myRecord.empname = myRecord.empname + " " + "III"; try replace emp; onException myErrorHandler(10); // salir del programa end end // fin de forEach; el cursor se cierra automáticamente // cuando se ha leído la última fila del conjunto de resultados onException // el bloque de excepción relacionado con forEach no se ejecuta si la condición // es noRecordFound, así que evite la prueba "if (not noRecordFound)" myErrorHandler(8); // salir del programa end sysLib.commit();
Record Employee type sqlRecord { tableNameVariables = [["empTable"]], // la utilización de una variable de nombre de tabla // significa que la tabla se especifica // durante la ejecución keyItems = ["empnum"] } empnum decimal(6,0) { isReadonly = yes }; empname char(40); // especificar propiedades de una columna calculada aValue decimal(6,0) { isReadonly = yes, column = "(empnum + 1) as NEWNUM" }; end
emp Employee; empTable char(40);
emp.empnum = 1; emp.empname = "John"; empTable = "Employee";
// la variable de nombre de tabla no va precedida de un signo de dos puntos try add emp with #sql{ insert into empTable (empnum, empname) values (:empnum, :empname || ' ' || 'Smith') } onException myErrorHandler(8); end
emp.empnum = 1;
try get emp into empname // La cláusula into es opcional. (No // no estar en la sentencia SELECT). with #sql{ select empname from empTable where empum = :empnum + 1 } onException myErrorHandler(8); end
try get emp singleRow // La cláusula into se deriva // del registro SQL y se basa en // las columnas de la cláusula select with #sql{ select empname from empTable where empnum = :empnum + 1 } onException myErrorHandler(8); end
try // La cláusula into se deriva // del registro SQL y se basa en // las columnas de la cláusula select open selectEmp forUpdate with #sql{ select empnum, empname from empTable where empnum >= :empnum order by NEWNUM -- utiliza el valor calculado for update of empname } for emp; onException myErrorHandler(8); // salir del programa end try get next emp; onException myErrorHandler(9); // salir del programa end while (emp not noRecordFound) try replace emp with #sql{ update :empTable set empname = :empname || ' ' || 'III' } from selectEmp; onException myErrorHandler(10); // salir del programa end try get next emp; onException myErrorHandler(9); // salir del programa end end // fin de while // no es necesario indicar "close emp;", ya que emp // se cierra automáticamente cuando se ha leído // el último registro del conjunto de resultados o // (en caso de una excepción) cuando el programa finaliza sysLib.commit();
try // La cláusula into se deriva // del registro SQL y se basa en // las columnas de la cláusula select open selectEmp forUpdate with #sql{ select empnum, empname from empTable where empnum >= :empnum order by NEWNUM -- utiliza el valor calculado for update of empname } for emp; onException myErrorHandler(8); // salir del programa end try forEach (from selectEmp) try replace emp with #sql{ update :empTable set empname = :empname || ' ' || 'III' } from selectEmp; onException myErrorHandler(9); // salir del programa end end // fin de sentencia forEach, y // no es necesario indicar "close emp;", ya que emp // se cierra automáticamente cuando se ha leído // el último registro del conjunto de resultados o // (en caso de una excepción) cuando el programa finaliza onException // el bloque de excepción relacionado con forEach no se ejecuta si la condición // es noRecordFound, así que evite la prueba "if (not noRecordFound)" myErrorHandler(9); // salir del programa end sysLib.commit();
Record Employee type sqlRecord { tableNames = [["employee"]], keyItems = ["empnum"], defaultSelectCondition = #sqlCondition{ aTableColumn = 4 -- iniciar cada componente SQL -- con un guión doble } } empnum decimal(6,0) {isReadonly=yes}; empname char(40); end
emp Employee; empnum02 decimal(6,0); empname02 char(40); myString char(120);
emp.empnum = 1; emp.empname = "John"; empnum02 = 2; empname02 = "Jane";
prepare myPrep from "insert into employee (empnum, empname) " + "values (?, ?)" for emp; // puede utilizar el registro SQL // para comprobar el resultado de la operación if (emp is error) myErrorHandler(8); end
myString = "insert into employee (empnum, empname) " + "values (?, ?)"; try prepare addEmployee from myString; onException myErrorHandler(8); end
execute addEmployee using emp.empnum, emp.empname;
execute addEmployee using empnum02, empname02;
empnum02 = 2;
myString = "select empnum, empname from employee " + "where empnum >= ? for update of empname"; try prepare selectEmployee from myString for emp; onException myErrorHandler(8); // salir del programa end try open selectEmp with selectEmployee using empnum02 into emp.empnum, emp.empname; onException myErrorHandler(9); // salir del programa end try get next from selectEmp; onException myErrorHandler(10); // salir del programa end while (emp not noRecordFound) emp.empname = emp.empname + " " + "III"; try replace emp with #sql{ update employee set empname = :empname } from selectEmp; onException myErrorHandler(11); // salir del programa end try get next from selectEmp; onException myErrorHandler(12); // salir del programa end end // fin de while; el cierre es automático cuando se ha leído la última fila sysLib.commit();
myString = "select empnum, empname from employee " + "where empnum >= ? for update of empname"; try prepare selectEmployee from myString for emp; onException myErrorHandler(8); // salir del programa end try open selectEmp with selectEmployee using empnum02 into emp.empnum, emp.empname; onException myErrorHandler(9); // salir del programa end try forEach (from selectEmp) emp.empname = emp.empname + " " + "III"; try replace emp with #sql{ update employee set empname = :empname } from selectEmp; onException myErrorHandler(11); // salir del programa end end // end // fin de forEach; el cierre es automático cuando se ha leído la última fila onException // el bloque de excepción relacionado con forEach no se ejecuta si la condición // es noRecordFound, así que evite la prueba "if (not noRecordFound)" myErrorHandler(12); // salir del programa end sysLib.commit();