private void RunCleanup() { foreach (IRelation r in Model.Relations) { if (r.Persistence.Persisted) { cleaner.WriteDropForeignKey(r, environment); cleaner.WriteSeparator(); } } cleaner.WriteLine(); foreach (IEntity en in Model.Entities) { if (en.Persistence.Persisted) { cleaner.WriteDropTable(en, environment); cleaner.WriteSeparator(); } } cleaner.WriteLine(); foreach (IGenerator gen in Model.Generators) { cleaner.WriteDropSequence(gen, environment); cleaner.WriteSeparator(); } }
private void ProcessSchemas() { List <string> schemas = new List <string>(); foreach (IEntity entity in Model.Entities) { if (!schemas.Contains(entity.Persistence.Schema)) { schemas.Add(entity.Persistence.Schema); } } if (createSchema) { foreach (string schemaName in schemas) { WriteSchema(schemaName); updater.WriteLine(); } } string sql = String.Format("ALTER SESSION SET current_schema={0}", schemas[0]); WriteExecImmediat(sql); creator.WriteLine(sql); creator.WriteSeparator(); }
private void ProcessUpdateAttributes(IEntity entity, IAttributes attributes) { foreach (IAttribute a in attributes) { if (a.Persistence.Persisted) { ICodeWriterPlSql sql = Model.Lamp.CodeWritersFactory.CreateCodeWriterPlSql(); updater.WriteLine("SELECT count(*) INTO {0} FROM ALL_TAB_COLUMNS WHERE OWNER='{1}' AND TABLE_NAME='{2}' AND COLUMN_NAME='{3}' AND ROWNUM=1;", VarNameFoundCount, entity.Persistence.Schema, entity.Persistence.Name, a.Persistence.Name); updater.If("{0} <> 1", VarNameFoundCount); sql.WriteLine("ALTER TABLE {0} ADD ", entity.Persistence.FullName); sql.Indent++; sql.WriteLine("{0} {1} NULL", a.Persistence.Name, environment.ToTypeName(a, false)); WriteExecImmediat(sql); string updateColSql = sql.ToString(true); if (a.TypeDefinition.Required && a.TypeDefinition.HasDefault) { sql.ClearAll(); sql.WriteLine("UPDATE {0} SET {1}={2}", entity.Persistence.FullName, a.Persistence.Name, environment.ToDefaultValue(a)); WriteExecImmediat(sql); updateColSql = updateColSql + Environment.NewLine + sql.ToString(true); sql.ClearAll(); sql.WriteLine("ALTER TABLE {0} MODIFY ({1} NOT NULL)", entity.Persistence.FullName, a.Persistence.Name); WriteExecImmediat(sql); updateColSql = updateColSql + Environment.NewLine + sql.ToString(true); } updater.EndIf(); genie.Config.NotifyAssistants("Update", a, updateColSql); } } updater.WriteLine(); }
private void WriteSchema(string name) { updater.WriteLine("SELECT count(*) INTO {0} FROM ALL_USERS WHERE USERNAME='******' AND ROWNUM=1;", VarNameFoundCount, name); updater.If("{0} <> 1", VarNameFoundCount); ICodeWriterPlSql sql = Model.Lamp.CodeWritersFactory.CreateCodeWriterPlSql(); sql.WriteLine("CREATE USER {0}", name); sql.Indent++; sql.WriteLine("IDENTIFIED BY {0}", schemaPassword); sql.WriteLine("DEFAULT TABLESPACE {0}", schemaDefaultTablespace); sql.WriteLine("TEMPORARY TABLESPACE {0}", schemaTempTablespace); sql.WriteLine("ACCOUNT UNLOCK"); WriteExecImmediat(sql); creator.WriteFrom(sql); creator.WriteSeparator(); if (schemaGrantDba) { WriteExecImmediat(creator.WriteLine("GRANT DBA TO {0}", name)); creator.WriteSeparator(); } WriteExecImmediat(creator.WriteLine("GRANT SELECT ANY TABLE TO {0}", name)); creator.WriteSeparator(); WriteExecImmediat(creator.WriteLine("GRANT UPDATE ANY TABLE TO {0}", name)); creator.WriteSeparator(); WriteExecImmediat(creator.WriteLine("GRANT INSERT ANY TABLE TO {0}", name)); creator.WriteSeparator(); WriteExecImmediat(creator.WriteLine("GRANT DELETE ANY TABLE TO {0}", name)); creator.WriteSeparator(); WriteExecImmediat(creator.WriteLine("GRANT EXECUTE ANY TABLE TO {0}", name)); creator.WriteSeparator(); WriteExecImmediat(creator.WriteLine("GRANT SELECT ANY TABLE TO {0}", name)); creator.WriteSeparator(); updater.EndIf(); }
private void BeginScripting() { updater.WriteStdHeader(genie); creator.WriteStdHeader(genie); cleaner.WriteStdHeader(genie); updater.WriteLine("SET SERVEROUTPUT ON;"); updater.WriteLine("WHENEVER SQLERROR EXIT FAILURE ROLLBACK;"); updater.WriteLine("WHENEVER OSERROR EXIT FAILURE ROLLBACK;"); updater.WriteLine("DECLARE"); updater.Indent++; updater.DeclareVariable(VarNameFoundCount, "INTEGER"); updater.DeclareVariable(VarNameSql, "VARCHAR2(32000)"); updater.Indent--; updater.BeginScope(); }