простые вопросы по Ораклу

User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Re: простые вопросы по Ораклу

Post by Sabina »

JustMax wrote:На триггеры прекрасно все ложится. Строится конечный автомат. Состояния, значения полей (must be, may be, must not be) , возможные переходы между состояниями при update, insert, delete накладывается на матрицу (отдельная таблица) и вуаля. В триггере ноль бизнес логики - он только накладывает изменения данных на матрицу и выполняет откат если состояние запрещено или возможный вызов процедур если таковые для данного события/перехода/состояния определены в матрице. При особенно сложной логике приложений только так и спасаемся. :wink:


Возможно так оно и есть. Вам виднее :wink: Только я для своего конкретного приложения пока не вижу как все сделать на триггерах. Может тот план, что у меня в голове и не совсем верный, но другого нет :(
Значит если что не так, буду учиться на ошибках.

Сабина

PS. JustMax, вы у меня первый в списке кандидатов в приемочную комиссию по этому приложению, так что к началу июня готовьтесь (Just kidding :lol: )
User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Re: простые вопросы по Ораклу

Post by Sabina »

все-таки вопрос с encoding.
сделала

SELECT *
FROM nls_database_parameters
WHERE parameter = 'NLS_CHARACTERSET';

Oracle (data150) says:
PARAMETER VALUE
------------------------------ ------------
NLS_CHARACTERSET WE8MSWIN1252

Получается мом данные в Windows -1252.
А вот тутвон что написано:

There are of course, many other character encodings in general use, the most common on Windows platforms being Windows 1252. Many programs assume that 1252 is the same as ISO-8859-1 but it is not, 1252 defines an extra 34 characters in addition to those from ISO-8859-1. If there is a possibility that data will be used on other platforms, make sure that the program is really saving in ISO-8859-1 format and not Windows 1252.


То есть если я хочу, чтобы моя DB была portable, мне надо поменять кодировку?

Как это делают чтобы с самого начала кодировка была какая нужно? SQL командой в DBSchema или еще как?

Спасибо,
Сабина
vc
Уже с Приветом
Posts: 664
Joined: 05 Jun 2002 01:11

Re: простые вопросы по Ораклу

Post by vc »

Sabina wrote:все-таки вопрос с encoding.
сделала

SELECT *
FROM nls_database_parameters
WHERE parameter = 'NLS_CHARACTERSET';

Oracle (data150) says:
PARAMETER VALUE
------------------------------ ------------
NLS_CHARACTERSET WE8MSWIN1252

Получается мом данные в Windows -1252.
А вот тутвон что написано:

There are of course, many other character encodings in general use, the most common on Windows platforms being Windows 1252. Many programs assume that 1252 is the same as ISO-8859-1 but it is not, 1252 defines an extra 34 characters in addition to those from ISO-8859-1. If there is a possibility that data will be used on other platforms, make sure that the program is really saving in ISO-8859-1 format and not Windows 1252.


То есть если я хочу, чтобы моя DB была portable, мне надо поменять кодировку?

Как это делают чтобы с самого начала кодировка была какая нужно? SQL командой в DBSchema или еще как?

Спасибо,
Сабина


The Oracle database has _two_ character sets: (1) the database character set and (2) the national character set.

(1) is used for:

o Data stored in SQL CHAR datatypes (CHAR, VARCHAR2, CLOB, and LONG)
o Identifiers such as table names, column names, and PL/SQL variables
o Entering and storing SQL and PL/SQL source code

(2) is an alternative character set that lets you store Unicode character data in a database that does not have a Unicode database character set.

The choice of both depends on your specific application(s) requirements.
(1) and (2) are defined during the database creation process (the CREATE DATABASE statement). Both can be changed with the ALTER DATABASE statements iff the new character set is a strict superset of the current character set.

For details, see http://download-west.oracle.com/docs/cd ... 29/toc.htm


VC
User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Re: простые вопросы по Ораклу

Post by Sabina »



Спасибо за ценный линк, я все прочла от и до. И все же я конечно извиняюсь за свое тугодумие, но мне пока не все ясно.

В данный момент у меня в базе стоит charset WE8MSWIN1252.
Из приведенной мною статьи ясно, что мне нужно WE8MSWIN1252.

Правильно ли я поняла, что при создании базы мне нужно было указывать "WE8MSWIN1252"? На данной базе это не получится, я не администратор и доступа ни к чему нет. Но на будущее учту. То есть сама установка charset добавляется в create database statement.

А интересно как происходит конвертация, скажим если на webpage в метатаге стоит
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
Ведь в самом-то Оракле данные, набитые в полях форм уже в другой кодировке Windows-1252?

Сабина
User avatar
JustMax
Уже с Приветом
Posts: 1476
Joined: 05 Dec 2000 10:01
Location: Vilnius -> Bonn

Re: простые вопросы по Ораклу

Post by JustMax »

Sabina wrote:
В данный момент у меня в базе стоит charset WE8MSWIN1252.
Из приведенной мною статьи ясно, что мне нужно WE8MSWIN1252.

А интересно как происходит конвертация, скажим если на webpage в метатаге стоит
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
Ведь в самом-то Оракле данные, набитые в полях форм уже в другой кодировке Windows-1252?

Сабина


Wo pervych opasaites' situacii kogda s klienta (browser) prihodiat dannye v kodirovke otlichnoj ot clienta bazy dannyh (WebServer, AppServer) - mozhet poluchitsia kasha. Esli klient bazy rabotaet v kodirovke WE8MSWIN1252 to i Content-Type dolzhen byt' MSWIN1252 vo izbezhanie. Esli zhe u vas i client bazy i udalennyj client (browser) rebotajut v kodirovke iso-8859-1 (Oracle WE8ISO8859P1) a baza sozdana s kodirovkoj WE8MSWIN1252 to Oracle delaet konvertaciju avtomaticheski mezhdu dvumia charsets. Pri etom esli v bazovoj kodirovke otsutstvujut nekotorye simvoly, to oni zameniajutsia na foneticheski blizkie (ä -> a, ü -> u) ili na simvol zameshenija (po umolchaniju '?'). Pri etom vazhno chtoby na kliente bazy (AppServer, WebServer) byla opisana peremennaja okruzhenija NLS_LANG (naprimer NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1), chtoby Oracle znal iz kakoj kodirovki nado delat' konvertaciju. V principe v vasem sluchae kodirovka klienta mozhet byt' kak ISO tak MSWIN t.k ISO8859-1 javliaetsia strong subset of MSWIN1252, t.e. vy ne budete imet' problem s perekodirovkoj (t.e. perekodirovki voobshe ne budet). V obshem sluchae esli perekodirovku mozhno izbezhat' - luchshe eto zdelat' hotia by radi performance. Voobshe esli hotite polnost'uj portable database, ispol'zujute dlia bazy kodirovku AL32UTF8 (Unicode 3.2) pri etom esli vy v osnovnom pol'zuetes' ASCII simvolami, to vy nichego ne proigraete - pod nich tak zhe kak i ran'she budet vydelen odin bait! :D. Esli zhe vy nachnete ispol'zovat' simvoly iz drugih (bolee rasshirennyh kodirovok) - pod takie simvoly budut vydeliatsi ot 2 do 4 bait (Napr pod nem. bukvy üßäö - 2 baita, pod kitaiskie, japonskie 3 baita, pod spec. simvoly 4 baita)
vc
Уже с Приветом
Posts: 664
Joined: 05 Jun 2002 01:11

Re: простые вопросы по Ораклу

Post by vc »

[quote="Sabina

Правильно ли я поняла, что при создании базы мне нужно было указывать "WE8MSWIN1252"? На данной базе это не получится, я не администратор и доступа ни к чему нет. Но на будущее учту. То есть сама установка charset добавляется в create database statement.

Сабина[/quote]

Yes.
User avatar
Dmitry67
Уже с Приветом
Posts: 28294
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Post by Dmitry67 »

Sabina, а почему Вы с ним столько об Оракле разговариваете ?
Я ревную
:oops:

Про MS SQL у Вас вопросов нет ?
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Post by Sabina »

Dmitry67 wrote:Sabina, а почему Вы с ним столько об Оракле разговариваете ?
Я ревную
:oops:

Про MS SQL у Вас вопросов нет ?


А потому что на той работе, где мы использовали SQL Server замораживают код :(
Мы вот сидим гадаем. То ли из-за того, что они уже окончательно сворачиваются из-за отсутствия клиентов, то ли просто будут налегать на маркетинг from now on.

То есть из занятий для души у меня остался один учебный проект на Oracle.
Вот кстати новость у меня. Сегодня устроилась на работу part-time, совсем не программирование, но теперь хоть будет "хватать на булавки". И офис очень клевый - рядом с Шевроном и IBM. Правда ехать мне туда утром полтора часа, но это уже diferent story.

У них самописная система на Виндах (какой язык не знаю, но не Джава, потому что там ходят слухи, что на Джаву хотят переписать).
Писал программу индус, причем работает все четко и хорошо выглядит. Но он и за место свою держится клещами. В общем меня сразу предупредили, чтобы о программировании и не мечтала.

А ревновать Дима не стоит :nono#: . Я вам пишу личное(!) письмо уже вторую неделю :D . Но только с этой работой и проч. пока никак не закончу.

Сабина
User avatar
Dmitry67
Уже с Приветом
Posts: 28294
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Post by Dmitry67 »

Поздравляю хотя это и part time
Полтора часа ехать не здорово. Я так ездил месяцев шесть 50 миль
Правда было так: выезжаешь в 6:55, едешь 50min, в 7:00 - час, в 7:05 - полтора часа и больше. Приходилось вставать рано. А так как я сова, то пару раз выходя из машины на стоянке я с ужасом понимал что не помню как я ехал (ехал во сне ? :pain1: )
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
User avatar
Amik
Уже с Приветом
Posts: 3322
Joined: 02 Nov 2000 10:01
Location: USA, East Coast

Re: простые вопросы по Ораклу

Post by Amik »

WE8MSWIN1252 и iso-8859-1 (P?) Отличаются весьмя небольшим количеством символов.Например, в 8859P1 нет символа TM(TradeMark) Собственно, WIN1252 - это суперсет над 8859, если я не ошибяюсь.
Так-что проблемы у вас могут возникнуть только если вы умудритесь записать в 1252 базу какой-либо символ которого нету в 8859P1, а потом будете просматривать это поле на терминале на котором NLS_LANG<>1252.
Вместо символа скорее всего будут знаки вопроса.

Sabina wrote:


Спасибо за ценный линк, я все прочла от и до. И все же я конечно извиняюсь за свое тугодумие, но мне пока не все ясно.

В данный момент у меня в базе стоит charset WE8MSWIN1252.
Из приведенной мною статьи ясно, что мне нужно WE8MSWIN1252.

Правильно ли я поняла, что при создании базы мне нужно было указывать "WE8MSWIN1252"? На данной базе это не получится, я не администратор и доступа ни к чему нет. Но на будущее учту. То есть сама установка charset добавляется в create database statement.

А интересно как происходит конвертация, скажим если на webpage в метатаге стоит
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
Ведь в самом-то Оракле данные, набитые в полях форм уже в другой кодировке Windows-1252?

Сабина

Return to “Вопросы и новости IT”