Вопрос : уточните таблицу если показатель не существует в противном случае показатель вставки

Я имею программник пытается получить это Кодего к work.
I не думает логикой будет правильно - могу вы сказать мне он имеет неправильное?

He хочет проверить таблицу для того чтобы увидеть если показатель существует, то - если он существует он хочет уточнить ее, то - если она не существует он хочет ввести record.
##########################################################
CREATE ИЛИ ЗАМЕНИТЬ СЛИЯНИЕ
AS
BEGIN

ПРОЦЕДУРЫ CNSADMIN.UpdateApprovedScoutRule
(p_SID В ApprovedScoutRule.SID%TYPE, p_RuleText
В ApprovedScoutRule.RuleText%TYPE, p_DefaultPriority
В ApprovedScoutRule.DefaultPriority%TYPE, p_IsSoRule
В ApprovedScoutRule.IsSoRule%TYPE,

p_IsIgnored В ApprovedScoutRule.IsIgnored%TYPE
) В asr
ApprovedScoutRule USING (ОТБОРНЫЙ SID,
RuleText,
DefaultPriority,
IsSoRule,
IsIgnored ОТ ApprovedScoutRule)
НА (asr2.SID = asr.SID)
КОГДА СОПРЯГАЕМОЕ THEN
       --УТОЧНИТЕ СУЩЕСТВУЯ
SET
УТОЧНЕНИЯ RULE
asr.RuleText = p_RuleText,
asr.DefaultPriority = p_DefaultPriority,
asr.IsSoRule = p_IsSoRule,
asr.IsIgnored = p_IsIgnored
ГДЕ asr.SID = p_SID
КОГДА СОПРЯГАЕМОЕ ПОСЛЕ ЭТОГО
            --ВВЕДИТЕ НОВОЕ
VALUES
RULE
INSERT
(asr.SID,
asr.RuleText,
asr.DefaultPriority,
asr.IsSoRule,
asr.IsIgnored) (p_SID, p_RuleText
, p_DefaultPriority
, p_IsSoRule
, p_IsIgnored

);

ПОРУЧАЕТ;
EXCEPTION


КОГДА ДРУГИЕ ПОСЛЕ ЭТОГО
RAISE_APPLICATION_ERROR (- 20001, p_SID
   || «: $: » || p_RuleText
   || «: $: » ||p_DefaultPriority
   || «: $: » ||p_IsSoRule
   || «: $: » ||
SQLERRM, TRUE);

END UpdateApprovedScoutRule;
/
###########################################################

Thanks
class=

Ответ : уточните таблицу если показатель не существует в противном случае показатель вставки

Заканчивать связь:
http://jasonvogel.blogspot.com/2008/01/upsert-merge-within-same-table-oracle.html


Т ведите меня к следующий тестовому входу.  Примечание: Я изменил имя таблицы.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
продувка myApprovedScoutRule таблицы  падения;
создайте myApprovedScoutRule таблицы (чарс sid (1), чарс ruletext (1), чарс defaultpriority (1), чарс issorule (1), isignored чарс (1));
введите в значения myApprovedScoutRule («a», «b», «c», «d», «e ");
введите в значения myApprovedScoutRule («z», «z», «z», «z», «z ");
поручите;

СОЗДАЙТЕ ИЛИ ЗАМЕНИТЕ ПРОЦЕДУРУ UpdateApprovedScoutRule
(
    p_SID В myApprovedScoutRule.SID%TYPE,
    p_RuleText В myApprovedScoutRule.RuleText%TYPE,
    p_DefaultPriority В myApprovedScoutRule.DefaultPriority%TYPE,
    p_IsSoRule В myApprovedScoutRule.IsSoRule%TYPE,
    p_IsIgnored В myApprovedScoutRule.IsIgnored%TYPE
)
КАК
НАЧНИТЕ

    СЛЕЙТЕ В asr myApprovedScoutRule
    ИСПОЛЬЗУЮЩ (ВЫБЕРИТЕ p_sid sid,
             p_ruletext RuleText,
             p_DefaultPriority DefaultPriority,
             p_IsSoRule IsSoRule,
             p_IsIgnored IsIgnored ОТ двойного) asr2   
    НА (asr2.SID = asr.SID)
    СОПРЯГАНО ПОСЛЕ ЭТОГО
       --ПРАВИЛО УТОЧНЕНИЯ СУЩЕСТВУЮЩИЙ
        УТОЧНЕНИЕ 
            КОМПЛЕКТ
                 asr.RuleText = p_RuleText,
                 asr.DefaultPriority = p_DefaultPriority,
                 asr.IsSoRule = p_IsSoRule,
                 asr.IsIgnored = p_IsIgnored
            ГДЕ asr.SID = p_SID
      КОГДА СОПРЯГАНО ПОСЛЕ ЭТОГО    
            --ВВЕДИТЕ НОВОЕ ПРАВИЛО
            ВСТАВКА
                (asr.SID,
                 asr.RuleText,
                 asr.DefaultPriority,
                 asr.IsSoRule,
                 asr.IsIgnored)
            ЗНАЧЕНИЯ
                (p_SID,
                 p_RuleText,
                 p_DefaultPriority,
                 p_IsSoRule,
                 p_IsIgnored
                );
    
    ПОРУЧИТЕ;
    
    
ИСКЛЮЧЕНИЕ
        КОГДА ДРУГИЕ ПОСЛЕ ЭТОГО 
             RAISE_APPLICATION_ERROR (- 20001, 
              p_SID    || «: $: » || 
              p_RuleText    || «: $: » ||
              p_DefaultPriority    || «: $: » ||
              p_IsSoRule    || «: $: » ||
              SQLERRM, TRUE);

КОНЕЦ UpdateApprovedScoutRule;
/

покажите ошибки


updateapprovedscoutrule exec («a», «a», «a», «a», «a ");
updateapprovedscoutrule exec («b», «b», «b», «b», «b ");

выберите * от myApprovedScoutRule;
Другие решения  
  •  Как я добавляю кнопки на форме PDF для того чтобы добавить/извлекаю рядки данных?
  •  Шнур ошибки в блоке задвижки?
  •  сколько вариант сервера SQL на одной машине
  •  Внешний вид 2007 не может архивный файл открытой сети сохраненный
  •  Активно директория DNS записывает вопрос
  •  Отчет о доступа 2010 экспорта к CSV с коллекторами?
  •  Прокладчик OCE 9400 не начинает
  •  как добавить десятичное место в формуле в отчете о кристалла seagate
  •  Windows XP и Мичрософт Оутлоок и проблемы установителя Windows
  •  VB6 к VS2010 - консультации тренировки?
  •  
    programming4us programming4us