Перед проверкой фрагментов, пожалуйста, имейте в виду, что на момент написания этой статьи у меня не было доступа к базе данных Oracle, чтобы проверить их каким-либо образом.Все, что следует, записано из памяти.
Я предполагаю, что вы используете sqlplus для запуска ваших скриптов.Разве вы не можете просто поместить оператор create и блок PL / SQL в файл?
SET serveroutput ON
spool 03_CREATE_CATEGORIEDECL.log
create table CATEGORIEDECLARATION (
nIdCategorieDeclaration NUMBER(10) not null,
...
constraint PK_CATDECLA primary key (nIdCategorieDeclaration)
/
BEGIN
select c.nidcalendrier into millesime from calendrier c where c.smillesime = '2010';
-- Lignes relatives au formulaire CA3
INSERT into CATEGORIEDECLARATION (nIdCategorieDeclaration,nIdTypeFormulaire,sLibelle,sType,sAide,sTexte,sTexte2,sTypeAffichage,bAffichage,sInterval,nIdCalendrier)
values (seq_CATEGORIEDECLARATION.nextval,'5','Autres cas (zone de saisie libre)', 'SOMME_A_DEDUIRE','','',NULL,'CAT_AUTRE_CAS', 1, 'POSITIF',millesime);
COMMIT;
END;
/
spool off
Другой подход заключается в динамическом создании сценария и вызове его
<pre>
SET serveroutput ON
SET FEEDBACK OFF
SET HEADING OFF
SET LINESIZE 800
SET PAGESIZE 0
SET ECHO OFF</p>
<p>SPOOL gen_cr_table_script.sql
SELECT 'create table CATEGORIEDECLARATION (
nIdCategorieDeclaration NUMBER(10) not null,
...
constraint PK_CATDECLA primary key (nIdCategorieDeclaration)
)'
FROM SYS.DUAL
/
SPOOL OFF</p>
<p>@gen_cr_table_script.sql</p>
<p>-- you can generate the insert script here if needed
-- spool gen_ins_script.sql
-- select ...
-- spool off
-- spool 03_CREATE_CATEGORIEDECL.log
-- @gen_ins_script.sql
-- spool off
-- add commit where appropriate
* 1009.*
Или вы можете использовать простой подход sqlplus без блоков pl / sql
<pre>
create table CATEGORIEDECLARATION (
nIdCategorieDeclaration NUMBER(10) not null,
...
constraint PK_CATDECLA primary key (nIdCategorieDeclaration)
/</p>
<p>INSERT INTO CATEGORIEDECLARATION (nIdCategorieDeclaration,nIdTypeFormulaire,sLibelle,sType,sAide,sTexte,sTexte2,sTypeAffichage,bAffichage,sInterval,nIdCalendrier)
SELECT (seq_CATEGORIEDECLARATION.nextval,'5','Autres cas (zone de saisie libre)', 'SOMME_A_DEDUIRE','','',NULL,'CAT_AUTRE_CAS', 1, 'POSITIF',c.nidcalendrier);
FROM calendrier c
WHERE c.smillesime = '2010'
/
COMMIT
/