From 5d783e2dc2601ce29503ad8d0377c151265b4fd7 Mon Sep 17 00:00:00 2001 From: Jos Groot Lipman Date: Wed, 13 Aug 2025 11:05:07 +0000 Subject: [PATCH] FCLT#88579 Facilitor utf-8 ondersteuning svn path=/Database/trunk/; revision=69990 --- ADM/ADM_PAC.SRC | 3 +++ BGT/BGT_TAB.SRC | 16 ++++++++-------- FAC/FAC_TAB.SRC | 4 ++-- FCLT.SRC | 21 ++++++++++++--------- WEB/WEB_TAB.SRC | 4 ++-- _UP/DB51to52.src | 19 +++++++++++++++++++ _UP/prologue.inc | 19 ++++++++++--------- 7 files changed, 56 insertions(+), 30 deletions(-) diff --git a/ADM/ADM_PAC.SRC b/ADM/ADM_PAC.SRC index 91e564ba..01605320 100644 --- a/ADM/ADM_PAC.SRC +++ b/ADM/ADM_PAC.SRC @@ -203,6 +203,9 @@ AS raise_application_error(-20001, tekst); END IF; + -- Voor als een once-script ooit tabellen aanmaakt. + EXECUTE IMMEDIATE 'ALTER SESSION SET nls_length_semantics=''char'''; + RETURN tekst; END; diff --git a/BGT/BGT_TAB.SRC b/BGT/BGT_TAB.SRC index d2b7c93f..0340fc01 100644 --- a/BGT/BGT_TAB.SRC +++ b/BGT/BGT_TAB.SRC @@ -13,9 +13,9 @@ CREATE_TABLE(bgt_disc_params,0) NUMBER (10) CONSTRAINT bgt_r_ins_discipine_key REFERENCES ins_tab_discipline (ins_discipline_key), bgt_disc_params_code -- projectcode - VARCHAR2 (20 BYTE), + VARCHAR2 (20 CHAR), bgt_disc_params_opdrachtgever - VARCHAR2 (200 BYTE), + VARCHAR2 (200 CHAR), bgt_disc_params_startdatum DATE ); @@ -28,18 +28,18 @@ CREATE_TABLE(bgt_project, 0) NUMBER (10) CONSTRAINT bgt_r_ins_discipline_key1 REFERENCES ins_tab_discipline (ins_discipline_key), bgt_project_code - VARCHAR2 (20 BYTE) + VARCHAR2 (20 CHAR) CONSTRAINT bgt_c_bgt_project_code NOT NULL, bgt_project_omschrijving - VARCHAR2 (60 BYTE), + VARCHAR2 (60 CHAR), bgt_project_volgnr NUMBER (3), bgt_project_prijspeildatum DATE, bgt_project_info - VARCHAR2 (4000 BYTE), + VARCHAR2 (4000 CHAR), bgt_project_notes - VARCHAR2 (4000 BYTE), + VARCHAR2 (4000 CHAR), bgt_project_aanmaak DATE DEFAULT SYSDATE, bgt_project_verwijder @@ -59,9 +59,9 @@ CREATE_TABLE(bgt_kostenrubriek,0) CONSTRAINT bgt_c_bgt_kostenrubriek1 NOT NULL CONSTRAINT bgt_r_bgt_project_key1 REFERENCES bgt_project (bgt_project_key), bgt_kostenrubriek_code - VARCHAR2 (20 BYTE), + VARCHAR2 (20 CHAR), bgt_kostenrubriek_oms - VARCHAR2 (60 BYTE) NOT NULL, + VARCHAR2 (60 CHAR) NOT NULL, fin_btwtabelwaarde_key NUMBER(10) CONSTRAINT bgt_r_fin_btwtabelwaarde_key REFERENCES fin_btwtabelwaarde (fin_btwtabelwaarde_key) diff --git a/FAC/FAC_TAB.SRC b/FAC/FAC_TAB.SRC index d8385e9d..64a2f5d9 100644 --- a/FAC/FAC_TAB.SRC +++ b/FAC/FAC_TAB.SRC @@ -1571,7 +1571,7 @@ CREATE_TABLE( fac_menuitems, 0) fac_menuitems_groep NUMBER(1), /* 0=personal, 1=professional, 2=appmanagement, 3=mobile*/ fac_menuitems_label VARCHAR2 (30 CHAR) NOT NULL, fac_menuitems_oms VARCHAR2 (60 CHAR), - fac_menuitems_module VARCHAR2 (3 BYTE), + fac_menuitems_module VARCHAR2 (3 CHAR), fac_menuitems_url VARCHAR2 (60 CHAR), fac_menuitems_srtdisc NUMBER(1), fac_menuitems_disc NUMBER(1), @@ -2204,7 +2204,7 @@ CREATE_TABLE(fac_imp_cnt, 0) uurtarief NUMBER (6,2), korting NUMBER (4,2), locatiecode VARCHAR2 (10), - terreincode VARCHAR2 (12), + terreincode VARCHAR2 (12), gebouwcode VARCHAR2 (12), verdiepingcode NUMBER (3), ruimtecode VARCHAR2 (20), diff --git a/FCLT.SRC b/FCLT.SRC index 055d4806..14b7a55c 100644 --- a/FCLT.SRC +++ b/FCLT.SRC @@ -22,17 +22,17 @@ spool &fcltlogfile WHENEVER SQLERROR EXIT; DECLARE tekst VARCHAR2 (1000); + charset VARCHAR2 (1000); n_object NUMBER (10); BEGIN - CASE ASCII('€') - WHEN 191 THEN tekst :='WE8ISO8859P1'; - WHEN 128 THEN tekst :='WE8MSWIN1252'; -- De enige goede - ELSE tekst :='UNKNOWN '; - END CASE; - IF tekst <> 'WE8MSWIN1252' THEN + SELECT MIN(client_charset) + INTO charset + FROM v$session_connect_info + WHERE sid = sys_context('USERENV','SID'); + IF charset <> 'WE8MSWIN1252' THEN tekst := '=================================================================' || CHR(10) - || 'Foute clientside NLS_LANG ['|| TO_CHAR(ASCII('€')) ||'] voor dit Facilitor script.' || CHR(10) - || 'WE8MSWIN1252 is nodig, ik vermoed '|| tekst || CHR(10) + || 'Foute clientside NLS_LANG voor dit Facilitor script.' || CHR(10) + || 'WE8MSWIN1252 is nodig, ik vermoed '|| charset || CHR(10) || 'Geef bijvoorbeeld in Windows voordat SQL*Plus opstart:' || CHR(10) || 'SET NLS_LANG=.WE8MSWIN1252' || CHR(10) || 'Het script wordt nu afgebroken!' || CHR(10) @@ -67,12 +67,15 @@ PROMPT SELECT 'Current os_user: ' || SYS_CONTEXT( 'userenv', 'os_user' ) FROM DUAL; PROMPT +ALTER SESSION SET nls_length_semantics='char'; + SET LINESIZE 1000 SET DEFINE OFF SET ECHO ON #include "adm\adm_tab.src" #include "adm\adm_seq.src" #include "adm\adm_tri.src" +/* adm_pac.src komt straks nog een keer met de recreate maar we hebben hem al eerder nodig */ #include "adm\adm_pac.src" /* TYPES */ @@ -203,6 +206,6 @@ PROMPT ====================================================================== SELECT 'Schema FACILITOR@' || USER || ' is now ' || fac.getdbversion() FROM DUAL; PROMPT PROMPT Your schema initialisation is ready. Please check the logfile for errors. -PROMPT If in doubt please contact: FACILITOR Helpdesk +31 53 4800 710 +PROMPT If in doubt please contact: Facilitor Helpdesk +31 53 4800 710 PROMPT Copyright (c) 1996-2025 Aareon Nederland B.V. All rights reserved. SPOOL OFF diff --git a/WEB/WEB_TAB.SRC b/WEB/WEB_TAB.SRC index 1f9b8af9..34862437 100644 --- a/WEB/WEB_TAB.SRC +++ b/WEB/WEB_TAB.SRC @@ -23,9 +23,9 @@ CREATE_TABLE(web_user_messages, 0) VARCHAR2(512) CONSTRAINT web_c_web_mes_dsc NOT NULL, web_user_mess_action_soort - CHAR(1), + VARCHAR2(1), web_user_mess_action_status - CHAR(1), + VARCHAR2(1), web_user_mess_action_params VARCHAR2(255), web_user_mess_prioriteit diff --git a/_UP/DB51to52.src b/_UP/DB51to52.src index 8a4cbb00..a6325b43 100644 --- a/_UP/DB51to52.src +++ b/_UP/DB51to52.src @@ -41,6 +41,25 @@ ALTER TABLE prs_perslid DEFAULT 1 NOT NULL; +/////////////////////////////////////////////////////////////////////////////////////////// FCLT#88579 +DECLARE + altersql VARCHAR (4000); +BEGIN + FOR curs IN ( SELECT c.* + FROM user_tab_columns c JOIN user_tables t ON t.table_name = c.table_name + WHERE char_used = 'B' + ORDER BY c.table_name, c.column_name) + LOOP + -- FAC_IMP_OPROGNOSE z’n kolom ELEMENT is een enigszins reserved woord lijkt. Daarom quotes + altersql := + 'alter table ' || curs.table_name || ' MODIFY "' || curs.column_name || '" VARCHAR (' || curs.data_length || ' CHAR)'; + DBMS_OUTPUT.PUT_LINE (altersql); + + EXECUTE IMMEDIATE altersql; + END LOOP; +END; +/ + /////////////////////////////////////////////////////////////////////////////////////////// FCLT#00000 diff --git a/_UP/prologue.inc b/_UP/prologue.inc index 837208c8..7065adff 100644 --- a/_UP/prologue.inc +++ b/_UP/prologue.inc @@ -62,17 +62,17 @@ END; DECLARE tekst VARCHAR2 (1000); + charset VARCHAR2 (1000); BEGIN - CASE ASCII('€') - WHEN 191 THEN tekst :='WE8ISO8859P1'; - WHEN 128 THEN tekst :='WE8MSWIN1252'; -- De enige goede - ELSE tekst :='UNKNOWN '; - END CASE; - IF tekst <> 'WE8MSWIN1252' THEN + SELECT MIN(client_charset) + INTO charset + FROM v$session_connect_info + WHERE sid = sys_context('USERENV','SID'); + IF charset <> 'WE8MSWIN1252' THEN tekst := '=================================================================' || CHR(10) - || 'Wrong clientside NLS_LANG ['|| TO_CHAR(ASCII('€')) ||'] for this Facilitor upgrade.' || CHR(10) - || 'WE8MSWIN1252 is required, we suspect '|| tekst || CHR(10) - || 'Please enter before you start SQL*Plus:' || CHR(10) + || 'Wrong clientside NLS_LANG for this Facilitor upgrade.' || CHR(10) + || 'WE8MSWIN1252 is required, we suspect '|| charset || CHR(10) + || 'Please enter this before you start SQL*Plus:' || CHR(10) || ' on Windows:' || CHR(10) || ' SET NLS_LANG=.WE8MSWIN1252' || CHR(10) || ' on Unix:' || CHR(10) @@ -130,6 +130,7 @@ variable update_start number exec :update_start := dbms_utility.get_time /* om zeker te weten dat eventuele conversies goed gaan */ ALTER SESSION SET nls_territory='america'; +ALTER SESSION SET nls_length_semantics='char'; SELECT adm.systeminfo FROM DUAL;