Меню

Sql statement doesn t return rows ошибка

adidas1997-21

1 / 1 / 1

Регистрация: 05.02.2015

Сообщений: 260

1

MySQL

21.10.2016, 07:28. Показов 3511. Ответов 2

Метки нет (Все метки)


Delphi
1
2
3
    form1.Users.SQL.Clear;
    form1.Users.SQL.Add('UPDATE `Users` SET Image = '''+IntTOstr(ID_Users)+ExtractFileExt(opendialog1.FileName)+''' where ID_Users = '+IntToStr(ID_Users)+' limit 1');
    form1.Users.Active:=true;

В чём может быть такая ошибка? И как её исправить?
Используется RAD XE10 + MyDAC

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



qwertehok

4716 / 3924 / 994

Регистрация: 29.08.2013

Сообщений: 25,176

Записей в блоге: 3

21.10.2016, 09:23

2

запросы которые не возвращают данные — UPDATEDELETE нужно запускать с помощью

Delphi
1
query.ExecSQLExecute

и прочее

Добавлено через 1 минуту
и писать

Цитата
Сообщение от adidas1997-21
Посмотреть сообщение

form1.

не надо, особенно если ты на форме1

а если ты на другой, то такое лучше делать отдельной функцией



1



1 / 1 / 1

Регистрация: 05.02.2015

Сообщений: 260

21.10.2016, 09:47

 [ТС]

3

Цитата
Сообщение от qwertehok
Посмотреть сообщение

а если ты на другой, то такое лучше делать отдельной функцией

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



0



 
Raven
 
(2003-09-11 15:12)
[0]

КАК запустить хранимую процедуру из OraQuery (использую компоненты ODAC).


 
Reindeer Moss Eater
 
(2003-09-11 15:13)
[1]

TOraStoredProc не разрешают использовать?

begin

имя(параметры);

end;


 
Raven
 
(2003-09-11 15:15)
[2]

В том то и дело… Мне нужно использовать эту процедуру в FastREport а там нет TOraStoredProc… есть только Oraquery


 
Reindeer Moss Eater
 
(2003-09-11 15:18)
[3]

Тогда второй вариант


 
Raven
 
(2003-09-11 15:23)
[4]

Пробовал…=(

Вроде бы запрос выполняет но в конце выдает ошибку

SQL statement doesn`t return rows.

И все


 
Reindeer Moss Eater
 
(2003-09-11 15:25)
[5]

А так?

begin

имя(параметры);

select null from dual;

end;


 
Raven
 
(2003-09-11 15:29)
[6]

А теперь обычный select не прокатит…

не будет он там работать…

пробовас с EXECUTE IMMEDIATE таже фигня =(


 
Reindeer Moss Eater
 
(2003-09-11 15:33)
[7]

Слушай, я что-то не въезжаю откуда в FastReport TOraQuery?


 
Raven
 
(2003-09-11 15:39)
[8]

Все просто поставил под него Компонент ODAC и все


 
Reindeer Moss Eater
 
(2003-09-11 15:40)
[9]

У меня и то и другое есть, но все как-то отдельно существует.

Какой ODAC?


 
Vlad
 
(2003-09-11 15:44)
[10]

А почему ты просто не хочешь «заглушить» Exception ?

Ведь тут очевидно, что это ODAC»овское излишество, проверять вернул Query что-то или нет.


 
Raven
 
(2003-09-11 15:46)
[11]

FR_ODAC.DPK приятель подкинул добавляетс в FastReport TfrODACQuery и TfrODACDatebase


 
Raven
 
(2003-09-11 15:51)
[12]

Vlad эТО НЕ ОШИБКА… Просто QUERY сопротивляется и я никак не могу ее победить


 
roottim
 
(2003-09-11 15:54)
[13]

я так понимаю к этим компонентам можно обртиться из ФР скриптяги…

тогда пробуй так

в SmartQuery.Sql.Text

begin

MYPROCE(:P1, :P2, :RESULT1, :RESULT2);

end;


а вскрипте



q1.ParamByName("P1").AsString := "T";

q1.ParamByName("P2").AsInteger := c;

a := q1.ParamByName("RESULT1").AsInteger;

b := q1.ParamByName("RESULT2").AsString;

а если ф-я то..

SELECT MYFUNC(...) FROM ХЗ[DUAL]


 
roottim
 
(2003-09-11 15:56)
[14]

блин, слона забыл…

q1.ParamByName("P1").AsString := "T";

q1.ParamByName("P2").AsInteger := c;

q1.ExecSql;

a := q1.ParamByName("RESULT1").AsInteger;

b := q1.ParamByName("RESULT2").AsString;


 
Raven
 
(2003-09-11 16:05)
[15]

roottim что то я не понял что ты имееш в виду…

У меня есть Хранимая PL/SQL процедура в Oracle… Есть компонента DELPHI FAstREPORT. а там есть TfrODACQuery и TfrODACDatebase….

И я ODACQuery.SQl хочу запустить хранимую процедуру… но нисего не получается си. выше


 
Reindeer Moss Eater
 
(2003-09-11 16:08)
[16]

TOraQuery.ExecSQL

Ругается что «SQL statement doesn`t return rows» ?


 
Raven
 
(2003-09-11 16:10)
[17]

УГУ


 
Reindeer Moss Eater
 
(2003-09-11 16:11)
[18]

Ну и «гаси» этот эксепшен.


 
DT
 
(2003-09-11 16:13)
[19]

наверное, в процедуре д.б. выходной пар-р типа cursor


 
Vlad
 
(2003-09-11 16:14)
[20]

Вот и я говорю. Во всех нормальных Query такое возможно.

Один только ODAC решил выпендриться с проверкой возвращаемых строк. ИМХО, надо гасить !


 
slgeo
 
(2003-09-11 16:15)
[21]

Вы предлагаете исходники компонента переписать?


 
Vlad
 
(2003-09-11 16:16)
[22]

>slgeo (11.09.03 16:15) [21]

try except для чего изобрели ?


 
roottim
 
(2003-09-11 16:22)
[23]

я так пологаю на OnPrint некого элемента FR вешается обработчик для получения неких данных через ODAC для их дальнейшего изображения.

пусть у тебя будет

TfrODACQuery c именем .Name := «q1»;

на OnPrint элемениа

begin

q1.SQL.Text := "begin MYPROCE(:P1, :P2, :RESULT1, :RESULT2); end;"

// это твои входные параметы IN

q1.ParamByName("P1").AsString := "T";

q1.ParamByName("P2").AsInteger := 12;

q1.ExecSql;

// это твои выходные данные

a := q1.ParamByName("RESULT1").AsInteger;

b := q1.ParamByName("RESULT2").AsString;

// а дальше незнаю что ты хочеш с ними делать

// например

memo1.Text := b;

end;

так предпологаю я…

а еслиб вы мне их закинули на roottim@electro.tchercom.ru,

я бы сказал точнее :), если не жалко конечно…

хотя эти fr интересно зависят от моих ODAC, или нет…

если независят то какая верси ODAC использовалась для внедрения в FR компоненты


 
Raven
 
(2003-09-11 16:30)
[24]

BEGIN

MY_PROCEDURE(…)

EXCEPTION

WHEN OTHERS THEN

NULL;

END;

НЕ ПРОКАТЫВАЕТ =(


 
Vlad
 
(2003-09-11 16:32)
[25]

Чего ты творишь ?

В дельфи на ExecSql обкладывай try except !


 
Raven
 
(2003-09-11 16:34)
[26]

ROTTIM

ХРАНИМАЯ ПРОЦЕДУРА ПРОИЗВОДИТ СЛОЖНУЮ ОБРАБОТКУ ДАННЫЕ ИЗ РАЗНЫХ ТАБЛИЦ, ЧТО НЕЛЬЗЯ СДЕЛАТЬ SQL ЗАПРОСАМИ, И ЗАПОЛНЯЕТ НЕКОТОРУЮ ВРЕМЕННУЮ ТАБЛИЦУ….

МНЕ НУЖНЫ ДАННЫЕ ИЗ ЭТО ТАБЛИЦЫ ДЛЯ СОСТАВЛЕНИЯ ОТЧЕТА


 
Raven
 
(2003-09-11 16:37)
[27]

ВЛАД

МНЕ ВЫДАЕТ ПРЕДУПРЕЖДЕНИЕ НЕ DELPHI А ORACLE


 
Reindeer Moss Eater
 
(2003-09-11 16:38)
[28]

Перед выполнением отчета выполняем sp не средствами FastReport.

В FastReport читаем данные из уже готовой таблицы.


 
Raven
 
(2003-09-11 16:38)
[29]

ПРОСЬБА ТЕМ КТО НЕ РАБОТАЛ В FASTREPORT НЕ СОВЕТОВАТЬ ТАК КАК НЕ ПОЙМУТ


 
roottim
 
(2003-09-11 16:39)
[30]



> ХРАНИМАЯ ПРОЦЕДУРА ПРОИЗВОДИТ СЛОЖНУЮ ОБРАБОТКУ ДАННЫЕ ИЗ

> РАЗНЫХ ТАБЛИЦ, ЧТО НЕЛЬЗЯ СДЕЛАТЬ SQL ЗАПРОСАМИ, И ЗАПОЛНЯЕТ

> НЕКОТОРУЮ ВРЕМЕННУЮ ТАБЛИЦУ….

> МНЕ НУЖНЫ ДАННЫЕ ИЗ ЭТО ТАБЛИЦЫ ДЛЯ СОСТАВЛЕНИЯ ОТЧЕТА



вот эти слова должны первые посте стоять… откуда мне то знать чего твоя процедура делает…

ну незнаю на диалоге на батон вешай обработчик

begin

q1.SQL.Text := "begin MYPROCE(:P1, :P2); COMMIT; end;"

// это твои входные параметы IN

q1.ParamByName("P1").AsString := "T";

q1.ParamByName("P2").AsInteger := 12;

q1.ExecSql;

end;

и что ничего не работает ??


 
roottim
 
(2003-09-11 16:42)
[31]

это не код delphi а скрипт на батоне FR Dialog


 
Raven
 
(2003-09-11 16:43)
[32]

Reinder

Похоже только так =(


 
slgeo
 
(2003-09-11 16:44)
[33]

to roottim

такой код в Fast-e не прокатит


 
Vlad
 
(2003-09-11 16:44)
[34]

Да едрён батон !

>Вроде бы запрос выполняет но в конце выдает ошибку

>SQL statement doesn`t return rows.

Твои слова ? Запрос значит выполняет все таки ? Т.е. хранимка отрабатывает ?

Если да то

try

ExecSql;

except

end;

Кстати, если это Оракл тебе возращает такую ошибку (во что я слабо верю), значит ищи баг в хранимой процедуре ! ИМХО, где-то NO_DATA_FOUND закралось.


 
Raven
 
(2003-09-11 16:59)
[35]

ХРАНИМАЯ ПРОЦЕДУ РАБОТАЕТ НОРМАЛЬНО ПРОВЕРЯЛ В ЖАБЕ(TOAD)


 
roottim
 
(2003-09-12 08:28)
[36]



> такой код в Fast-e не прокатит



естестенно такой не покатит, но ведь у меня нет исходников на фрОДАК

я смотрел реализацию фрДОА.

св-ва params, SQL и ExecSQL там зарегистрированы…

а что есть в его компонентах.. хз.. могу толькоп редполагать..

2Raven

либо реализация фрОДАК у вас кривая (помоему она не входит в пак_адд_он, видимо нетестирования самопальная), либо…


  • Remove From My Forums
  • Question

  • I have execute sql task and i pass in 2 parameters to the sql statement inside execute sql task. Sometimes the sql statement returns rows and sometimes it doesn’t.
    when the sql statement returns rows, the rest of the package runs fine. If the sql statement does not return rows, the package fails and the error message is

    [Execute SQL Task] Error: An error occurred while assigning a value to variable «varPeriod»: «Single Row result set is specified, but no rows were returned.».

    what should i do to make sure that even if the sql statement returns nothing, it has to go on?

    The execute sql task that i am talking about is inside foreach loop?


    Thanks

Answers

    • Marked as answer by

      Wednesday, November 3, 2010 8:03 PM

    msm.ru

    Нравится ресурс?

    Помоги проекту!

    [!] Как относитесь к модерированию на этом форуме? Выскажите свое мнение здесь

    >
    Проблема с Odac
    , update

    • Подписаться на тему
    • Сообщить другу
    • Скачать/распечатать тему



    Сообщ.
    #1

    ,
    21.01.04, 08:20

      OraQuery->SQL=»update alf set k=2 where k=1″
      Изменения происходят, но выдает ошибку «SQL statement doesn’t return rows»


      Sazabis



      Сообщ.
      #2

      ,
      21.01.04, 09:27

        ты делаешь ExecSQL() или Open() ?


        Vit



        Сообщ.
        #3

        ,
        21.01.04, 14:22

          Квери всех типов кроме Select выполняются при помощи ExecSQL

          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

          0 пользователей:

          • Предыдущая тема
          • Borland C++ Builder/Turbo C++ Explorer
          • Следующая тема

          Рейтинг@Mail.ru

          [ Script execution time: 0,0514 ]   [ 16 queries used ]   [ Generated: 29.01.23, 02:01 GMT ]  

          Hi Folks,

          I am trying to execute a standard   ‘select * from x’  statement using PHP 5.4 and the PHP SQL Drivers (5.5 as 64bit) and am getting no rows returned (there should be about 20).

          The code is:  $result = sql_query($db_handle, $query, null);    with $result containing nothing.

          $db_handle contains a valid resource id and $query contains «select * from x’.

          I have all of the logging enabled (and nothing is being output error wise (LogSubsystems=-1 and LogSeverity=-1) — also have display_errors set and nothing being output.

          Running SQL Server profiler I see an audit_login followed by a query (rpc_completed).  exec sp_cursoropen @p1 output, N’select * from x’, @p3, output, @p4 output, $p5 output

          The following line in the profiler is ‘audit logout’

          No data is returned.   If I cut and paste the query into SQL server management studio I get 20 rows returned.

          I have tried putting some invalid SQL in (select FROM x settings) but no error is given when the query is executed (although I do see it appear in the SQL Server profiler.

          Does anyone have an idea on what might be going wrong?

          Regards

          Andy

          Update:  I also get in the SQL Profiler

          SQL:BatchStarting:  Select * from x,  

          SqlBatchCompleted: Select * from x,

          But no rows are returned.

          Resolution: Upon logging in to the database server via a remote SQL Management Studio session using the UID/PWD off the PHP sql_connection it was determined that the user did not have read permissions on the database.  No error was
          being returned.    Correct permissions were assigned to the login and all is working.

          • Edited by

            Wednesday, July 2, 2014 3:38 AM

          Hi, so I am trying to update a table in my db thorugh sql alchmey mixed with pandas. This actually might be the culprit of my issue. I am new to sql alchemy, pandas, and python so I used a template my mentor gave me to add to the code.

          Anyways, my script processes csv files. if the file has format error, it will update the status of the file in the table to «error» and move the file to an «error» directory. To this regard I wrote an update table method:

          def update_csv_status_db(db_instance, name_of_db_instance_tabledict, csvfile_path, dir_status):
              table_dict = db_instance[name_of_db_instance_tabledict]
              csvfile_name = csvfile_path.name
              sql = update(table_dict['table']).where(table_dict['table'].c.CSV_FILENAME == csvfile_name).values(CSV_STATUS=dir_status)
              df = pd.read_sql(sql, table_dict['connection'])
              #df.to_sql('odfs_tester_history_files', con=table_dict['engine'], if_exists='append', index=False)
          
          

          Which is called in this function:

          def odf_history_from_csv_to_dbtable(db_instance):
              odfsdict = db_instance['odfs_tester_history']
              #table_row = {}
              totalresult_list = []
          
              dir_dict, dictofpdir_flist = make_dict_of_csvprocessing_dirs()
              print(dir_dict)
              csvbase_path_list = dictofpdir_flist["csvbase_path_list"]
              archivefiles_path_set = dictofpdir_flist["archivefiles_path_set"]
              errorfiles_path_set = dictofpdir_flist["errorfiles_path_set"]
              emptyfiles_path_set = dictofpdir_flist["emptyfiles_path_set"]
          
              for csv in csvbase_path_list:  # is there a faster way to compare the list of files in archive and history?
                  if csv.name in archivefiles_path_set:
                      print(csv.name + " is in archive folder already")
                  elif csv.name in errorfiles_path_set:
                      print(csv.name + " is in error folder already")
                  elif csv.name in emptyfiles_path_set:
                      print(csv.name + " is in empty folder already")
                  else:
                      csvhistoryfilelist_to_dbtable(csv, db_instance)
                      df_tuple = process_csv_formatting(csv)
                      df_cnum, odfscsv_df = df_tuple
                      if df_cnum == 1:
                          trg_path = Path(dir_dict['empty_dir'])
                          csv.rename(trg_path.joinpath(csv.name))
                          update_csv_status_db(db_instance, 'odfs_tester_history_files', csv, 'empty')
                      elif df_cnum == 0 and len(odfscsv_df.index != 0):
                          result = odfscsv_df.to_sql('odfs_tester_history', con=odfsdict['engine'], if_exists='append', index=False)
                          totalresult_list.append(result)
                          trg_path = Path(dir_dict['archive_dir'])
                          csv.rename(trg_path.joinpath(csv.name))
                          update_csv_status_db(db_instance, 'odfs_tester_history_files', csv, 'archive')
          
              return totalresult_list
          

          So a very weird error happens after this runs. Testing it with one file that contains bad formating, an «error» file. it actually processes the file, moves it to the error directory and updates the table. However at the end, the program breaks and returns the following error:

          Traceback (most recent call last):
            File "C:ProgramDataAnaconda3libsite-packagessqlalchemyengineresult.py", line 1161, in _fetchall_impl
              return self.cursor.fetchall()
          AttributeError: 'NoneType' object has no attribute 'fetchall'
          
          During handling of the above exception, another exception occurred:
          
          Traceback (most recent call last):
            File "C:/Users/sys_nsgprobeingestio/Documents/dozie/odfs/odfshistory3.py", line 269, in <module>
              odf_history_from_csv_to_dbtable(db_instance)
            File "C:/Users/sys_nsgprobeingestio/Documents/dozie/odfs/odfshistory3.py", line 244, in odf_history_from_csv_to_dbtable
              update_csv_status_db(db_instance, 'odfs_tester_history_files', csv, 'error')
            File "C:/Users/sys_nsgprobeingestio/Documents/dozie/odfs/odfshistory3.py", line 178, in update_csv_status_db
              df = pd.read_sql(sql, table_dict['connection'])
            File "C:ProgramDataAnaconda3libsite-packagespandasiosql.py", line 438, in read_sql
              chunksize=chunksize,
            File "C:ProgramDataAnaconda3libsite-packagespandasiosql.py", line 1231, in read_query
              data = result.fetchall()
            File "C:ProgramDataAnaconda3libsite-packagessqlalchemyengineresult.py", line 1216, in fetchall
              e, None, None, self.cursor, self.context
            File "C:ProgramDataAnaconda3libsite-packagessqlalchemyenginebase.py", line 1478, in _handle_dbapi_exception
              util.reraise(*exc_info)
            File "C:ProgramDataAnaconda3libsite-packagessqlalchemyutilcompat.py", line 153, in reraise
              raise value
            File "C:ProgramDataAnaconda3libsite-packagessqlalchemyengineresult.py", line 1211, in fetchall
              l = self.process_rows(self._fetchall_impl())
            File "C:ProgramDataAnaconda3libsite-packagessqlalchemyengineresult.py", line 1163, in _fetchall_impl
              return self._non_result([])
            File "C:ProgramDataAnaconda3libsite-packagessqlalchemyengineresult.py", line 1168, in _non_result
              "This result object does not return rows. "
          sqlalchemy.exc.ResourceClosedError: This result object does not return rows. It has been closed automatically.
          

          I have noticed when I have multiple files, it will process some of them, the rest it will leave once it hits this error. And it is spontaneous on when it hits the error. How can I fix this?

          Is there a way to update thet able without needing to use pandas _readsql? COuld this be the issue? The fact that I am using pandas _tosql. And if so, what alternative can i use to commit the update?

          █ 15.06.2010 11:16

          Не могу разобраться с функцией decode
          Мне нужно получить ближайший нечетный понедельник (не четная дата) после определенной даты + 7 дней

          █ 15.06.2010 12:41

          Если по частям, то просто следующий понедельник
          my_date2 := my_date+8-TO_NUMBER(TO_CHAR(my_date, ‘D’))
          Как определить, что эта дата четная и прибавить неделю — думаю понимаешь. Но в один запрос это городить неудобно.

          Что такое decode — описаний же полно.
          decode(параметр,
          значение_параметра_1, вернуть_что_то_№1,
          значение_параметра_2, вернуть_что_то_№2,
          значение_параметра_3, вернуть_что_то_№3,
          и т.д.,
          иначе_вернуть_что_то_№xx)

          █ 15.06.2010 14:23

          Родил следующее

          Код:

           SELECT MIN(DTT) AS DT FROM(
              SELECT DTT FROM(
                  select decode(to_char(dt,'d'),1, dt) AS DTT from (select to_date('13.06.2010')+7 dt from dual)
                  UNION select decode(to_char(dt,'d'),1, dt) AS DTT from (select to_date('13.06.2010')+8 dt from dual)
                  UNION select decode(to_char(dt,'d'),1, dt) AS DTT from (select to_date('13.06.2010')+9 dt from dual)
                  UNION select decode(to_char(dt,'d'),1, dt) AS DTT from (select to_date('13.06.2010')+10 dt from dual)
                  UNION select decode(to_char(dt,'d'),1, dt) AS DTT from (select to_date('13.06.2010')+11 dt from dual)
                  UNION select decode(to_char(dt,'d'),1, dt) AS DTT from (select to_date('13.06.2010')+12 dt from dual)
                  UNION select decode(to_char(dt,'d'),1, dt) AS DTT from (select to_date('13.06.2010')+13 dt from dual)
                  UNION select decode(to_char(dt,'d'),1, dt) AS DTT from (select to_date('13.06.2010')+14 dt from dual)
                  UNION select decode(to_char(dt,'d'),1, dt) AS DTT from (select to_date('13.06.2010')+15 dt from dual)
          ) WHERE mod(TO_NUMBER(SUBSTR(DTT,0,2)),2)<>0)

          Не очень красиво, но работает 🙂

          █ 15.06.2010 15:30

          какой-то ужас 🙂
          попробуй так (считал от текущего, меняй sysdate на что тебе надо), особо не тестировал, проверь:

          Цитата:

          with monday as (select sysdate+15-TO_NUMBER(TO_CHAR(sysdate, ‘D’)) «mon» from dual)
          select decode(mod(TO_NUMBER(TO_CHAR(«mon», ‘DD’)),2),0,»mon»+7,»mon»)from monday

          █ 15.06.2010 16:13

          Цитата:

          John Doe ➤ какой-то ужас 🙂
          попробуй так (считал от текущего, меняй sysdate на что тебе надо), особо не тестировал, проверь:

          Никак не могу победить, не работает 🙁

          █ 15.06.2010 16:15

          Пробовал свой код добавить тоже не работает в триггере 🙁

          Код:

          CREATE OR REPLACE TRIGGER SUPERMAG.LMMATRIXCHANGE
          BEFORE DELETE OR INSERT
          ON SUPERMAG.SMASSORTMATRIX 
          FOR EACH ROW
          DECLARE
          dayForZak int;
          DDATE date;
          daten char(10);
          BEGIN
          SELECT TO_NUMBER(VALUE) into dayForZak FROM SUPERMAG.LMCONFIG WHERE PARM='day_for_vvod';
          SELECT TO_CHAR(SYSDATE, 'DD.MM.YYYY') into daten FROM dual;
          SELECT TO_DATE(MIN(DTT)) into DDATE FROM(
              SELECT DTT FROM(
                        select decode(to_char(dt,'d'),1, dt) AS DTT from (select to_date(daten)+7 dt from dual)
                  UNION select decode(to_char(dt,'d'),1, dt) AS DTT from (select to_date(daten)+8 dt from dual)
                  UNION select decode(to_char(dt,'d'),1, dt) AS DTT from (select to_date(daten)+9 dt from dual)
                  UNION select decode(to_char(dt,'d'),1, dt) AS DTT from (select to_date(daten)+10 dt from dual)
                  UNION select decode(to_char(dt,'d'),1, dt) AS DTT from (select to_date(daten)+11 dt from dual)
                  UNION select decode(to_char(dt,'d'),1, dt) AS DTT from (select to_date(daten)+12 dt from dual)
                  UNION select decode(to_char(dt,'d'),1, dt) AS DTT from (select to_date(daten)+13 dt from dual)
                  UNION select decode(to_char(dt,'d'),1, dt) AS DTT from (select to_date(daten)+14 dt from dual)
                  UNION select decode(to_char(dt,'d'),1, dt) AS DTT from (select to_date(daten)+15 dt from dual)
          ) WHERE mod(TO_NUMBER(SUBSTR(DTT,0,2)),2)<>0);
          --Core.FailMsg('Äàòà'||DDATE);
          
          if inserting or updating then
          INSERT INTO LMMATRIXACTIONS(ARTICLE,ACTIONDATE,OWNER,ACTION,MATRIXID,LOCATION,ZAKDATE) 
          VALUES (:New.ARTICLE,SYSDATE,USER,'insert',:New.IDMATRIX,(SELECT STORELOC FROM SMASSORTMATRIXLOC WHERE IDMATRIX=:New.IDMATRIX),DDATE);
          
          else
          INSERT INTO LMMATRIXACTIONS(ARTICLE,ACTIONDATE,OWNER,ACTION,MATRIXID,LOCATION) VALUES 
          (:Old.ARTICLE,SYSDATE,USER,'delete',:Old.IDMATRIX,(SELECT STORELOC FROM SMASSORTMATRIXLOC WHERE IDMATRIX=:Old.IDMATRIX));
          end if;   
          END LMMATRIXCHANGE;
          /

          █ 15.06.2010 16:40

          Пробежал, не увидел слова autonomous transaction — бросил смотреть…
          В культурном обществе обычно слово «не работает» расшифровывают.

          █ 15.06.2010 17:01

          Цитата:

          PavelGS ➤ Мне нужно получить ближайший нечетный понедельник (не четная дата) после определенной даты + 7 дней

          Код:

          WITH datelist AS
               (SELECT TO_DATE ('01012010', 'DDMMYYYY') fromdate, TO_DATE ('31122010', 'DDMMYYYY') todate
                  FROM DUAL)
          SELECT DAY
            FROM (SELECT     fromdate + LEVEL - 1 DAY
                        FROM datelist
                  CONNECT BY LEVEL <= todate - fromdate + 1)
           WHERE TO_CHAR (DAY, 'D') = 1 AND TO_NUMBER (TO_CHAR (DAY, 'DD')) / 2 != TRUNC (TO_NUMBER (TO_CHAR (DAY, 'DD')) / 2) AND ROWNUM = 1

          █ 15.06.2010 17:24

          Запускаю как есть ругается

          Код:

          Error at line 1
          SQL statement doesn't return rows

          █ 15.06.2010 17:46

          Цитата:

          PavelGS ➤ Запускаю как есть ругается

          Где?

          Код:

          SQL*Plus: Release 10.2.0.4.0 - Production on Вт Июн 15 17:44:01 2010
          
          Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.
          
          
          Присоединен к:
          Oracle9i Release 9.2.0.8.0 - Production
          JServer Release 9.2.0.8.0 - Production
          
          SQL> WITH datelist AS
            2       (SELECT TO_DATE ('01012010', 'DDMMYYYY') fromdate, TO_DATE ('31122010', 'DDMMYYYY') todate
            3          FROM DUAL)
            4  SELECT DAY
            5    FROM (SELECT     fromdate + LEVEL - 1 DAY
            6                FROM datelist
            7          CONNECT BY LEVEL <= todate - fromdate + 1)
            8   WHERE TO_CHAR (DAY, 'D') = 1 AND TO_NUMBER (TO_CHAR (DAY, 'DD')) / 2 != TRUNC (TO_NUMBER (TO_CHAR (DAY, 'DD')) / 2) AND ROWNUM = 1;
          
          DAY
          --------
          11.01.10
          
          SQL>

          Часовой пояс GMT +3, время: 05:01.

          Форум на базе vBulletin®
          Copyright © Jelsoft Enterprises Ltd.
          В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.

          0 0 голоса
          Рейтинг статьи
          Подписаться
          Уведомить о
          guest

          0 комментариев
          Старые
          Новые Популярные
          Межтекстовые Отзывы
          Посмотреть все комментарии

          А вот еще интересные материалы:

        • Яшка сломя голову остановился исправьте ошибки
        • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
        • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
        • Sql state im003 native 160 ошибка 126 sqlsrv32 dll windows 10
        • Sql error 22003 ошибка введенное значение вне диапазона