2012-04-09 19 views
0

I .sql (sybase) Datei habe, die die Tabelle also „Create_table_mytable.sql“Wie SQL-Skript (sybase) Datei auszuführen cmd

Aber vor dem Erstellen der Tabelle es überprüfen der bestehenden Tabelle erstellt und fällt gleich.

hier ist, wie Skripte wie folgt aussieht: -

setuser 'dbo' 
go 


    IF EXISTS (SELECT 1 FROM sysobjects o, sysusers u WHERE o.uid=u.uid AND o.name = 'mytable' AND u.name = 'dbo' AND o.type = 'U') 
    begin 
     print 'dropping mytable' 
     drop table mytable 
     print 'dropped mytable' 
    end 
go  
    IF NOT EXISTS (SELECT 1 FROM sysobjects o, sysusers u WHERE o.uid=u.uid AND o.name = 'mytable' AND u.name = 'dbo' AND o.type = 'U') 
    begin  
     create table mytable (
       id numeric(9,0)  IDENTITY , 
       description    varchar(50)  not null 
       ) 

       GRANT SELECT ON dbo.mytable TO my_user 

       GRANT INSERT ON dbo.mytable TO my_user 

       GRANT DELETE ON dbo.mytable TO my_user 
    end 
    go 


end 
go 

setuser 
go 

Hier der Inhalt der cmd-Datei ist: -

@ECHO ON 

ECHO ">> START << mytable.sql" >> %LOG% 
%SQL% -S %SERVER% -U %USER% -P %PWD% -D %DB% -i mytable.sql >> %LOG% 

@ECHO OFF 

Hier werden die Inhalte der Protokolldatei ist: -

">> START << mytable.sql" 
Msg 102, Level 15, State 1: 
Server 'myserver', Line 14: 
Incorrect syntax near 'go'. 
">>> SYBASE SCRIPT COMPLETE <<< " 

Hinweis: Das gleiche Skript wird ordnungsgemäß ausgeführt, wenn es mit Sybase In ausgeführt wird Trective SQL oder ASE Tools.

Antwort

1

Gut, ich habe die Antwort bekommen. Hier ist, was ich nach dem Ablegen der Tabelle zu schreiben verpasst habe: -

use db 
go 

setuser 'dbo' 
go 


IF EXISTS (SELECT 1 FROM sysobjects o, sysusers u WHERE o.uid=u.uid AND o.name = 'mytable' AND u.name = 'dbo' AND o.type = 'U') 
begin 
print 'dropping mytable' 
    drop table mytable 
    print 'dropped table - mytable' 
end 
go 

IF (@@error != 0) 
BEGIN 
    PRINT "Error CREATING table 'mytable'" 
    SELECT syb_quit() 
END 
go 


IF NOT EXISTS (SELECT 1 FROM sysobjects o, sysusers u WHERE o.uid=u.uid AND o.name = 'mytable' AND u.name = 'dbo' AND o.type = 'U') 
begin  
    create table mytable (
      id numeric(9,0)  IDENTITY , 
      description    varchar(50)  not null 
      ) 


      GRANT SELECT ON dbo.mytable TO my_user 

      GRANT INSERT ON dbo.mytable TO my_user 

      GRANT DELETE ON dbo.mytable TO my_user 

end 
go 

setuser 
go