|
|
Public Function GetDatabase( )
Set OraDatabase = OraSession.GetDatabaseFromPool(10)
OraDatabase.LastServerErrReset
Set GetDatabase = OraDatabase
End Function
| |
|
|
|
|
Public Function BeginTran( OraDatabase )
On Error Resume Next
OraDatabase.Session.BeginTrans
if OraDatabase.Session.LastServerErr <> 0 then
OraDatabase.Session.CommitTrans
OraDatabase.Session.BeginTrans
end if
On Error Goto 0
End Function
| |
|
|
|
|
Public Function CommitTran( OraDatabase )
OraDatabase.Session.CommitTrans
End Function
| |
|
|
|
|
Public Function RollbackTran( OraDatabase )
OraDatabase.Session.Rollback
End Function
| |
|
|
|
|
Public Function OraSelect( OraDatabase, ByRef OraDynaset, SqlQuery )
Set OraDynaset = OraDatabase.CreateDynaset(SqlQuery,2)
if OraDynaset.EOF then
OraSelect = False
else
OraSelect = True
end if
End Function
| |
|
|
|
|
Public Function ExecuteSQL( OraDatabase, SQLCommand )
On Error Resume Next
OraDatabase.ExecuteSQL( SQLCommand )
if OraDatabase.LastServerErr <> 0 then
ExecuteSQL = False
else
ExecuteSQL = True
end if
On Error Goto 0
End Function
| |
|
|
一時テーブルの作成(存在する場合はTRUNCATE)
|
|
|
Public Function CreateTmpTable( DefinePath, TableName )
Dim FileSystem
Dim FileHandle
Set FileSystem = Server.CreateObject( "Scripting.FileSystemObject" )
TargetTableName = "ZT" & Session.SessionID & TableName
Set OraDatabase = GetDatabase( )
SqlQuery = "select TABLE_NAME from USER_TABLES where TABLE_NAME = " & Ss( TargetTableName )
Set OraDynaset = OraDatabase.CreateDynaset(SqlQuery,2)
if OraDynaset.EOF then
SqlUpdate = "CREATE TABLE " & TargetTableName & " ( "
SourcePath = Server.MapPath( DefinePath )
Set FileHandle = FileSystem.OpenTextFile( SourcePath, 1 )
Do while FileHandle.AtEndOfStream <> True
LineString = FileHandle.ReadLine
SqlUpdate = SqlUpdate & LineString & vbCrLf
Loop
FileHandle.Close
SqlUpdate = SqlUpdate & " )"
On Error Resume Next
OraDatabase.ExecuteSQL( SqlUpdate )
if OraDatabase.LastServerErr <> 0 then
CreateTmpTable = False
Call Alert( "一時テーブルの作成に失敗しました" )
Exit Function
end if
On Error Goto 0
else
SqlUpdate = "truncate table " & TargetTableName
On Error Resume Next
OraDatabase.ExecuteSQL( SqlUpdate )
if OraDatabase.LastServerErr <> 0 then
CreateTmpTable = False
Call Alert( "一時テーブルの初期化に失敗しました" )
Exit Function
end if
On Error Goto 0
end if
CreateTmpTable = True
End Function
| |
|
|
インデックス付き一時テーブルの作成(存在する場合はTRUNCATE)
|
|
|
Public Function CreateTmpIdxTable( DefinePath, TableName, IdxColumns )
Dim FileSystem
Dim FileHandle
Set FileSystem = Server.CreateObject( "Scripting.FileSystemObject" )
TargetTableName = "ZT" & Session.SessionID & TableName
Set OraDatabase = GetDatabase( )
SqlQuery = "select TABLE_NAME from USER_TABLES where TABLE_NAME = " & Ss( TargetTableName )
Set OraDynaset = OraDatabase.CreateDynaset(SqlQuery,2)
if OraDynaset.EOF then
SqlUpdate = "CREATE TABLE " & TargetTableName & " ( "
SourcePath = Server.MapPath( DefinePath )
Set FileHandle = FileSystem.OpenTextFile( SourcePath, 1 )
Do while FileHandle.AtEndOfStream <> True
LineString = FileHandle.ReadLine
SqlUpdate = SqlUpdate & LineString & vbCrLf
Loop
FileHandle.Close
SqlUpdate = SqlUpdate & " )"
On Error Resume Next
OraDatabase.ExecuteSQL( SqlUpdate )
if OraDatabase.LastServerErr <> 0 then
CreateTmpIdxTable = False
Call Alert( "一時テーブルの作成に失敗しました" )
Exit Function
end if
On Error Goto 0
if IdxColumns <> "" then
sToken = Split( IdxColumns, ":" )
nToken = Ubound( sToken )
For I = 0 to nToken
SqlUpdate = "create index " & TargetTableName & "IDX" & I + 1 & " on " & TargetTableName
SqlUpdate = SqlUpdate & " (" & sToken(I) & ")"
On Error Resume Next
OraDatabase.ExecuteSQL( SqlUpdate )
if OraDatabase.LastServerErr <> 0 then
CreateTmpIdxTable = False
Call Alert( "一時テーブルのインデックスの作成に失敗しました" )
Exit Function
end if
On Error Goto 0
Next
end if
else
SqlUpdate = "truncate table " & TargetTableName
On Error Resume Next
OraDatabase.ExecuteSQL( SqlUpdate )
if OraDatabase.LastServerErr <> 0 then
CreateTmpIdxTable = False
Call Alert( "一時テーブルの初期化に失敗しました" )
Exit Function
end if
On Error Goto 0
end if
CreateTmpIdxTable = True
End Function
| |
|
|
|