2012-04-09 50 views
0

我有.SQL(SYBASE)文件,該文件創建表即「Create_table_mytable.sql」如何使用CMD

執行.SQL腳本(SYBASE)文件,但在創建表之前,檢查現有的表和下降相同。

這裏是腳本的樣子: -

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 

下面是CMD文件的內容: -

@ECHO ON 

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

@ECHO OFF 

下面是日誌文件的內容: -

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

注意:如果使用Sybase In執行相同的腳本,則會正確運行trective SQL或ASE工具。

回答

1

很好,我得到了答案。下面是丟掉表格後我寫錯了什麼: -

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