Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Firebird 2.5 ругается на строковую константу / 16 сообщений из 16, страница 1 из 1
23.07.2018, 11:43
    #39677570
арт2010
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird 2.5 ругается на строковую константу
Хочу модифицировать существующую и работающую процедуру

Код: sql
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.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
begin

 for SELECT    PRICES.ID,
               PRICES.KOLVO,
               PRICES.SUMAP,
               PRICES.IDSPRTOVARA,
               PRICES.IDSPRPROIZV,
               PRICES.AP0,
               PRICES.AP1,
               PRICES.AP2,
               PRICES.AP3,
               PRICES.AP4,
               PRICES.AP5,
               PRICES.AP6,
               PRICES.AP7,
               PRICES.AP8,
               PRICES.AP9,
               PRICES.AP10,
               PRICES.AP11,
               PRICES.AP12,
               PRICES.AP13,
               PRICES.AP14,
               PRICES.AP15,
               PRICES.AP16,
               PRICES.AP17,
               PRICES.AP18,
               PRICES.AP19,
               PRICES.AP20,
               PRICES.AP21,
               PRICES.AP22,
               PRICES.AP23
    FROM PRICES
    where ((SUMAP is not null) or (SUMM is not null)) and (PROIZV = 1)
    ORDER BY NAME
    into :tmpid,:tmpkolvo, :tmpsumap,:tmpidsprtovara,:tmpidsprproizv,
    :tmpap0,:tmpap1,:tmpap2,:tmpap3,:tmpap4,:tmpap5,:tmpap6,:tmpap7,:tmpap8,:tmpap9,:tmpap10,:tmpap11,:tmpap12,:tmpap13,:tmpap14,:tmpap15,:tmpap16,:tmpap17,:tmpap18 ,:tmpap19,:tmpap20,:tmpap21,:tmpap22,:tmpap23
    do begin

        vse = 0;
        SUMMAZ = 0;
        SUMMSZAKAZA =:tmpsumap;

        /* 23.07.2018  */
        for SELECT SPRTOVARA.NAME from SPRTOVARA where SPRTOVARA.id = :tmpidsprtovara into :TMPNAMETOV
        do begin
           If (POSITION('КАНОН', :tmpnametov)> 0) then
               update prices set PRICES.IDSPRPROIZV = 1896 where prices.id = :tmpid;
        end
      /*  23.07.2018 */

        for SELECT
            RESIVEPRICE.ID,
            RESIVEPRICE.KOLVO,
            resiveprice.idsprtovara,
            RESIVEPRICE.idsprpostav
        FROM resiveprice
        where idsprtovara = :tmpidsprtovara and idsprproizv = :tmpidsprproizv and zakaz = 0
        /* 17.08.2017 */
        and ((RESIVEPRICE.idsprpostav <> 173) and (RESIVEPRICE.idsprpostav <> 180))
         /* 17.08.2017 */
        order by price, KOLVO desc
        into :tmpid_r,:tmpkolvo_r, :tovar_id, :postavshik_id
        do begin
           if (vse = 0) then begin
               if (SUMMSZAKAZA>tmpkolvo_r) then
                       begin
                       S =:tmpkolvo_r;
                       SUMMSZAKAZA = :SUMMSZAKAZA-:S;
                       end
                       else begin
                            S =:SUMMSZAKAZA;
                            end
              execute procedure inszakazipart(tmpid,tmpid_r, tovar_id, postavshik_id, S,
               tmpap1,tmpap2,tmpap3,tmpap4,tmpap5,tmpap6,tmpap7,tmpap8,tmpap9,
               tmpap10,tmpap11,tmpap12,tmpap13,tmpap14,tmpap15,tmpap16,tmpap17,tmpap18,tmpap19,tmpap20,tmpap21,tmpap22,tmpap23,0,tmpap0) returning_values :SUMMAZ,:tmpssumr ;
                   if (tmpssumr>0) then
                      update resiveprice set zakaz=1,KOLVOZAKAZ = :tmpssumr where resiveprice.id = :tmpid_r;
                   if (SUMMAZ >= tmpSUMAP) then begin
                                                vse = 1;
                                                end
                   /*else begin
                        /*tmpkolvo = tmpSUMAP-tmpsumm;
                        if (tmpsumm>0) then SUMMAZ = tmpsumm;
                        end*/
                        end
           end
           if (SUMMAZ > 0 ) then
              update prices set prices.summ =  :SUMMAZ where prices.id = :tmpid;
/**/   end
end
  




Получаю
авторThis operation is not defined for system tables.
unsuccessful metadata update.
MODIFY RDB$PROCEDURES failed.


Как я понимаю ругается на
Код: sql
1.
 If (POSITION('КАНОН', :tmpnametov)> 0) then


А конкретно на строковую константу. Но в чем дело? Как я понимаю, это более чем допустимо

Использование строковой переменной вместо константы дает ту же ошибку. Подскажите как побороть?
...
Рейтинг: 0 / 0
23.07.2018, 11:47
    #39677574
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird 2.5 ругается на строковую константу
заглянул под простыню...
ужоснах!
чем ты это генерил?!
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
23.07.2018, 11:48
    #39677575
арт2010
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird 2.5 ругается на строковую константу
Это все было уже до меня. Кстати, как оказалось дело не в константе, а в чем то другом. Закомментил условие, та же ошибка
...
Рейтинг: 0 / 0
23.07.2018, 11:51
    #39677578
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird 2.5 ругается на строковую константу
арт2010,

с алиасами имен таблиц просто шандец.
А текст ошибки неполный.
...
Рейтинг: 0 / 0
23.07.2018, 11:53
    #39677579
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird 2.5 ругается на строковую константу
арт2010,

это не полный текст ошибки из него ничего не понятно. С чего ты взял что дело в position?
...
Рейтинг: 0 / 0
23.07.2018, 11:55
    #39677582
арт2010
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird 2.5 ругается на строковую константу
Взял с того, что если заменить 'КАНОН' на 123 к примеру, процедуры альтерится без ошибок. А где взять полный текст ошибки?
...
Рейтинг: 0 / 0
23.07.2018, 11:59
    #39677590
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird 2.5 ругается на строковую константу
23.07.2018 11:55, арт2010 пишет:
> А где взять полный текст ошибки?

а чем ты альтеришь?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
23.07.2018, 12:01
    #39677592
арт2010
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird 2.5 ругается на строковую константу
В IBExpert
...
Рейтинг: 0 / 0
23.07.2018, 12:06
    #39677598
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird 2.5 ругается на строковую константу
ставлю на корявый чарсет БД в сочетании с чарсетом подключения. Возможно переход на 2.5 был без fix_metadata
...
Рейтинг: 0 / 0
23.07.2018, 12:13
    #39677606
арт2010
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird 2.5 ругается на строковую константу
Симонов Денис, есть возможность исправить или решить нужную мне задачу как-то по другому?
Остальное то все работает вроде. Если что вот параметры подключения
...
Рейтинг: 0 / 0
23.07.2018, 12:18
    #39677616
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird 2.5 ругается на строковую константу
charset NONE, это прЫкрасно!
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
23.07.2018, 12:23
    #39677622
арт2010
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird 2.5 ругается на строковую константу
Хз, всю жизнь так было у нас в конторе еще до меня и все работало прекрасно. Тем более как я понимаю, чарсет прямо указывается в таблицах
...
Рейтинг: 0 / 0
23.07.2018, 12:27
    #39677629
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird 2.5 ругается на строковую константу
23.07.2018 12:23, арт2010 пишет:
> Тем более как я понимаю, чарсет прямо указывается в таблицах

черсет коннекта, бамбино!
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
23.07.2018, 12:27
    #39677631
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird 2.5 ругается на строковую константу
арт2010если заменить 'КАНОН' на 123 к примеру

....т.е. если заменит ьстроку на целое число
...
Рейтинг: 0 / 0
23.07.2018, 12:35
    #39677645
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird 2.5 ругается на строковую константу
Arioch,

значит я угадал. Не на целое он меняет а на строку '123'. Просто в строке нет кириллицы от того и работает
...
Рейтинг: 0 / 0
23.07.2018, 12:58
    #39677671
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird 2.5 ругается на строковую константу
Симонов Денис,

я думаю, что все же на число. Просто оно автоматически кастуется.

select 123 || 456 from rdb$database
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Firebird 2.5 ругается на строковую константу / 16 сообщений из 16, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]