0

テーブルを作成する.sql(sybase)ファイル、つまり「Create_table_mytable.sql」があります

ただし、テーブルを作成する前に、既存のテーブルをチェックして削除します。

スクリプトは次のようになります: -

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 Intrective SQL または ASE Tools を使用して実行すると、同じスクリプトが正しく実行されます。

4

1 に答える 1

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 
于 2012-04-11T06:38:53.760 に答える