Текущее время: Ср, июл 23 2025, 08:03

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Native SQL
СообщениеДобавлено: Пн, дек 14 2009, 17:43 
Младший специалист
Младший специалист

Зарегистрирован:
Вт, апр 08 2008, 14:44
Сообщения: 81
Доброе время суток.
Подскажите пожалуйста где ошибка.

так дамп с ошибкой ORA-01036: illegal variable name/number

Code:
LOOP at wi.

  CONCATENATE '"' wi-SQLTAB '~' wi-INDEXNAME '"' INTO indexName.
  EXEC SQL.

    ALTER INDEX :indexName NOMONITORING USAGE

  ENDEXEC.

ENDLOOP.


а так все Ок.

Code:
LOOP at wi.

  CONCATENATE '"' wi-SQLTAB '~' wi-INDEXNAME '"' INTO indexName.
  EXEC SQL.

    ALTER INDEX "Z_MAT~Z0" NOMONITORING USAGE

  ENDEXEC.


ENDLOOP.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Native SQL
СообщениеДобавлено: Пн, дек 14 2009, 18:16 
Специалист
Специалист

Зарегистрирован:
Ср, апр 29 2009, 07:08
Сообщения: 197
Откуда: AUS RUSSLAND
Пол: Мужской
А если без ковычек попробовать?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Native SQL
СообщениеДобавлено: Пн, дек 14 2009, 19:26 
Младший специалист
Младший специалист

Зарегистрирован:
Вт, апр 08 2008, 14:44
Сообщения: 81
Чёрный Freelancer написал:
А если без ковычек попробовать?


так
Code:
LOOP at wi.

  CONCATENATE wi-SQLTAB '~' wi-INDEXNAME INTO indexName.
  EXEC SQL.

    ALTER INDEX :indexName NOMONITORING USAGE

  ENDEXEC.

ENDLOOP.


тоже пробовал - ошибка та же.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Native SQL
СообщениеДобавлено: Вт, дек 15 2009, 09:20 
Специалист
Специалист

Зарегистрирован:
Ср, апр 29 2009, 07:08
Сообщения: 197
Откуда: AUS RUSSLAND
Пол: Мужской
Ошибка ОРАКЛа, может переменную как-то попроще попробовать назвать, а то вдруг она в списке зарезервированных слов
Цитата:
ORA-01036 illegal variable name/number

Cause: Unable to find bind context on user side.

Action: Make sure that the variable being bound is in the SQL statement.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Native SQL
СообщениеДобавлено: Вт, дек 15 2009, 10:24 
Младший специалист
Младший специалист

Зарегистрирован:
Вт, апр 08 2008, 14:44
Сообщения: 81
Чёрный Freelancer написал:
Ошибка ОРАКЛа, может переменную как-то попроще попробовать назвать, а то вдруг она в списке зарезервированных слов
Цитата:
ORA-01036 illegal variable name/number

Cause: Unable to find bind context on user side.

Action: Make sure that the variable being bound is in the SQL statement.


Не помогает :(


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Native SQL
СообщениеДобавлено: Вт, дек 15 2009, 10:33 
Младший специалист
Младший специалист

Зарегистрирован:
Вт, апр 08 2008, 14:44
Сообщения: 81
Мне тут подсказали что сама команда ALTER INDEX не поддерживает работу с бинд переменными. Так каким же тогда образом подставлять имя индекса ?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Native SQL  Тема решена
СообщениеДобавлено: Вт, дек 15 2009, 11:08 
Специалист
Специалист

Зарегистрирован:
Ср, апр 29 2009, 07:08
Сообщения: 197
Откуда: AUS RUSSLAND
Пол: Мужской
excalibur написал(а):
Мне тут подсказали что сама команда ALTER INDEX не поддерживает работу с бинд переменными. Так каким же тогда образом подставлять имя индекса ?

Если так, то может попробовать через создание временных программ, используя GENERATE SUBROUTINE POOL, пример из help'а выглядит вроде подходящим:
Code:
DATA: prog TYPE string,
      tab  TYPE STANDARD TABLE OF string,
      mess TYPE string,
      sid  TYPE string.

APPEND 'PROGRAM subpool.'                        TO tab.
APPEND `DATA spfli_tab TYPE TABLE OF spfli.`     TO tab.
APPEND `LOAD-OF-PROGRAM.`                        TO tab.
APPEND `  SELECT *` &
       `         FROM spfli` &
       `         INTO TABLE spfli_tab.`          TO tab.
APPEND `FORM loop_at_tab.`                       TO tab.
APPEND `  DATA spfli_wa TYPE spfli.`             TO tab.
APPEND `  LOOP AT spfli_tab INTO spfli_wa.`      TO tab.
APPEND `    PERFORM evaluate_wa USING spfli_wa.` TO tab.
APPEND `  ENDLOOP.`                              TO tab.
APPEND `ENDFORM.`                                TO tab.
APPEND `FORM evaluate_wa USING l_wa TYPE spfli.` TO tab.
APPEND `  WRITE: / l_wa-carrid, l_wa-connid.`    TO tab.
APPEND `ENDFORM.`                                TO tab.

GENERATE SUBROUTINE POOL tab NAME prog
         MESSAGE mess
         SHORTDUMP-ID sid.

IF sy-subrc = 0.
  PERFORM ('LOOP_AT_TAB') IN PROGRAM (prog) IF FOUND.
ELSEIF sy-subrc = 4.
  MESSAGE mess TYPE 'I'.
ELSEIF sy-subrc = 8.
  MESSAGE sid TYPE 'I'.
ENDIF.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Native SQL
СообщениеДобавлено: Вт, дек 15 2009, 11:46 
Младший специалист
Младший специалист

Зарегистрирован:
Вт, апр 08 2008, 14:44
Сообщения: 81
Чёрный Freelancer написал:
excalibur написал(а):
Мне тут подсказали что сама команда ALTER INDEX не поддерживает работу с бинд переменными. Так каким же тогда образом подставлять имя индекса ?

Если так, то может попробовать через создание временных программ, используя GENERATE SUBROUTINE POOL, пример из help'а выглядит вроде подходящим:
Code:
DATA: prog TYPE string,
      tab  TYPE STANDARD TABLE OF string,
      mess TYPE string,
      sid  TYPE string.

APPEND 'PROGRAM subpool.'                        TO tab.
APPEND `DATA spfli_tab TYPE TABLE OF spfli.`     TO tab.
APPEND `LOAD-OF-PROGRAM.`                        TO tab.
APPEND `  SELECT *` &
       `         FROM spfli` &
       `         INTO TABLE spfli_tab.`          TO tab.
APPEND `FORM loop_at_tab.`                       TO tab.
APPEND `  DATA spfli_wa TYPE spfli.`             TO tab.
APPEND `  LOOP AT spfli_tab INTO spfli_wa.`      TO tab.
APPEND `    PERFORM evaluate_wa USING spfli_wa.` TO tab.
APPEND `  ENDLOOP.`                              TO tab.
APPEND `ENDFORM.`                                TO tab.
APPEND `FORM evaluate_wa USING l_wa TYPE spfli.` TO tab.
APPEND `  WRITE: / l_wa-carrid, l_wa-connid.`    TO tab.
APPEND `ENDFORM.`                                TO tab.

GENERATE SUBROUTINE POOL tab NAME prog
         MESSAGE mess
         SHORTDUMP-ID sid.

IF sy-subrc = 0.
  PERFORM ('LOOP_AT_TAB') IN PROGRAM (prog) IF FOUND.
ELSEIF sy-subrc = 4.
  MESSAGE mess TYPE 'I'.
ELSEIF sy-subrc = 8.
  MESSAGE sid TYPE 'I'.
ENDIF.


Подходит :) спс.

Вот еще один вариант нашел. Может кому пригодится.

Code:
PARAMETERS key TYPE scarr-carrid.

DATA: sql      TYPE REF TO cl_sql_statement,
      result   TYPE REF TO cl_sql_result_set,
      exc      TYPE REF TO cx_sql_exception,
      stmnt    TYPE string,
      carrid   TYPE scarr-carrid,
      carrname TYPE scarr-carrname,
      dref     TYPE REF TO data,
      rc       TYPE i.

TRY.
    CREATE OBJECT sql.
    CONCATENATE `SELECT carrid, carrname `
                `FROM scarr `
                `WHERE carrid = '` key `'`  INTO stmnt.
    result = sql->execute_query( stmnt ).
    GET REFERENCE OF carrid INTO dref.
    result->set_param( dref ).
    GET REFERENCE OF carrname INTO dref.
    result->set_param( dref ).
    rc = result->next( ).
    IF rc > 0.
      WRITE: / carrid, carrname.
    ELSE.
      WRITE / 'No entry found'.
    ENDIF.
    result->close( ).
  CATCH cx_sql_exception INTO exc.
    MESSAGE exc TYPE 'I' DISPLAY LIKE 'E'.
ENDTRY.


подробнее тут http://www.sdn.sap.com/irj/scn/weblogs;jsessionid=%28J2EE3414700%29ID1852717850DB01200657663831363898End?blog=/pub/wlg/15837


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB