Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Query con sentencia GO (https://www.clubdelphi.com/foros/showthread.php?t=44011)

nachoalbano 25-05-2007 23:47:01

Query con sentencia GO
 
Que tal a todos, estoy tratando de cerrar un sistema para entregar y me encuentro con este problema con el sql. Antes que nada les comento que es lo que estoy usando. Delphi 7 con SQLServer 2000, conexion por ado y componentes TADOQuery (crearBD).
Estoy ejecutando este código


Código Delphi [-]
crearBD.Close;
crearBD.SQL.Clear;
crearBD.SQL.LoadFromFile(PathAplicacion+'\bd.sql');
crearBD.ExecSQL;



pero el archivo bd.sql presenta sentencias GO para delimitar creates entre sp y otros objetos... y es justo ahi donde me tira un error de sintaxis. La misma query en el query analizer anda 10 puntos, pero desde el delphi me tira ese error.
si alguien me puede ayudar, se lo agradezco

este es un pedacito del código de SQL


Código SQL [-]
Create table [dbo].[TipoEstadoCivil]
(
[idEstadoCivil] Integer Identity NOT NULL, Constraint [XPKestcivil] UNIQUE ([idEstadoCivil]),
[descripcion] Varchar(30) NULL,
Primary Key ([idEstadoCivil])
)
go
Create table [dbo].[Modulos]
(
[nombre] Nvarchar(80) NOT NULL,
[descripcion] Varchar(80) NULL,
[idPadre] Integer NULL,
[idModulo] Integer NULL,
Primary Key ([nombre])
)
go
Create table [dbo].[TipoActividad]
(
[idActividad] Integer Identity NOT NULL, Constraint [XPKTipoActividad] UNIQUE ([idActividad]),
[descripcion] Varchar(80) NULL, Constraint [UQ__TipoActividad__0425A276] UNIQUE ([descripcion]),
Primary Key ([idActividad])
)
go

Muchas Gracias de antemano

droguerman 26-05-2007 00:09:33

el go solo lo usan el analizador de consultas o el isql para indicar el final de un bloque de sentencias como archivos separados, mi consejo luego de cargar tu
script haz lo siguiente:
Código Delphi [-]
for i:=0 to lineas.count-1 do
begin
  if lineas[i]='GO' then lineas[i] := '';
end;

suerte

nachoalbano 26-05-2007 00:27:41

lo pruebo... pero creo que voy a tener problema con unos create procedure que tengo más abajo en la query... igualmente me diste una idea para resolverlo... pruebo y posteo lo que hice.
gracias man! nos vemos en un rato

nachoalbano 26-05-2007 18:53:41

Tarde un poco en postear pero aca les tengo la solución que encontré a mi problema, gracias droguerman por la orientación! ;)

acá les dejo el código
Código Delphi [-]
                AssignFile(script,PathAplicacion+'\bd.sql'); // script es un TextFile
                reset(script);
                crearBD.SQL.Clear;
                while not eof(script) do
                begin
                    readLn(script,lineaScript);
                    if UpperCase(trim(lineaScript))='GO' then
                    begin
                      try
                        crearBD.ExecSQL;
                      Except
                      end;
                      crearBD.SQL.Clear;
                    end
                    else
                      crearBD.SQL.Add(lineaScript);
                end;

adios amigos


La franja horaria es GMT +2. Ahora son las 02:22:25.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi