Asunto: Error en "Administración Bases de Datos" - NOE127/
Cuando ejecuto la siguiente instrucción sql (marcando "Conectar en modo nativo - ORACLE):
Código:
CREATE VIEW GALLERY AS
SELECT * FROM GALLERY
el programa me devuelve el siguiente mensaje de error:
---------------------------
AjpdSoft Administración Bases de Datos
---------------------------
tablaNativoOracle: NOE127/DS - Can not call Open for a statement without rowset.
---------------------------
Aceptar
---------------------------
y no crea la vista.
El usuario con el que accedo tiene permisos suficientes para crear objetos en su esquema. Incluso he probado a poner el usuario como DBA, también he probado con el usuario system y tampoco funciona.
Publicado:
Mar Ene 23, 2007 9:15 am
alonsojpd Administrador/Moderador
Registrado: Sep 16, 2003 Mensajes: 2687
Asunto: Re: Error en "Administración Bases de Datos" - NOE
Anuncios
varios escribió:
Cuando ejecuto la siguiente instrucción sql (marcando "Conectar en modo nativo - ORACLE):
Código:
CREATE VIEW GALLERY AS
SELECT * FROM GALLERY
el programa me devuelve el siguiente mensaje de error:
---------------------------
AjpdSoft Administración Bases de Datos
---------------------------
tablaNativoOracle: NOE127/DS - Can not call Open for a statement without rowset.
---------------------------
Aceptar
---------------------------
y no crea la vista.
El usuario con el que accedo tiene permisos suficientes para crear objetos en su esquema. Incluso he probado a poner el usuario como DBA, también he probado con el usuario system y tampoco funciona.
Efectivamente, hemos reproducido el escenario que nos comentas y nos da el mismo error. Ya lo hemos subsanado, se trataba del procedimiento que utilizamos para saber si una consulta es de selección o de modificación de datos, pues hay que tratarlas de forma diferente. Si eres desarrollador, te mostramos el procedimiento (el que fallaba):
Código:
function consultaSeleccion (sql : String) : boolean;
var
resultado : boolean;
begin
resultado := pos ('SELECT', AnsiUppercase (trim(sql))) > 0;
if not resultado then
resultado := pos ('DESC', AnsiUppercase (trim(sql))) > 0;
if not resultado then
resultado := pos ('SHOW', AnsiUppercase (trim(sql))) > 0;
Result := resultado;
end;
El procedimiento "arreglado":
Código:
function consultaSeleccion (sql : String) : boolean;
var
resultado : boolean;
begin
resultado := pos ('SELECT', AnsiUppercase (trim(sql))) = 1;
if not resultado then
resultado := pos ('DESC', AnsiUppercase (trim(sql))) = 1;
if not resultado then
resultado := pos ('SHOW', AnsiUppercase (trim(sql))) = 1;
Result := resultado;
end;
El problema estaba en la búsqueda de SELECT, si lo encuentra en cualquier parte del texto de la consulta SQL la calificaba como "selección", en el caso de la consulta que nos has enviado, puesto que aparece el SELECT pero también el CREATE, la calificaba de selección, cuando en realidad es de modificación. Lo hemos solucionado, de momento, comprobando sólo la primera palabra de la consulta SQL, pues, en principio, todas deben empezar con una instrucción sql (SELECT, DESC, SHOW, INSERT, DELETE, DROP, ALTER, etc).
En breve colocaremos la nueva versión en la sección descargas de esta web.
Puede publicar nuevos temas en este foro No puede responder a temas en este foro No puede editar sus mensajes en este foro No puede borrar sus mensajes en este foro No puede votar en encuestas en este foro
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A