0 / 0 / 0
Регистрация: 12.02.2016
Сообщений: 54

Перевести из ms sql server в oracle

12.02.2016, 00:42. Показов 5326. Ответов 83
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть процедура и запрос
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
declare @DishName varchar(250)='Борщ';
declare @DishId int;
select @DishId = idDish from Dish where NameOfDish = @DishName;
 
with a as
(
select idZakaz from WhatToZakaz where idDish = @DishId
),
b as
(
select top(1) w.idDish
  from a join WhatToZakaz w on w.idZakaz = a.idZakaz
  where w.idDish <> @DishId
  group by w.idDish
  order by count(number) desc
)
select d.NameOfDish
 from b inner join Dish d on d.idDish = b.idDish;
END
T-SQL
1
2
3
4
5
6
7
8
9
10
11
SELECT top 1 with  ties datepart(dw,Zakaz.date1) AS Дата,
Max(WhatToZakaz.number) AS [Max-Количество],
Dish.NameOfDish
FROM Stuff1 inner  JOIN (Zakaz inner JOIN (Dish inner JOIN WhatToZakaz 
ON Dish.idDish = WhatToZakaz.idDish)
ON Zakaz.idZakaz = WhatToZakaz.idZakaz) 
ON Stuff1.idStuff = Zakaz.idStuff
GROUP BY  NameOfDish, Zakaz.date1
order by rank()
over(partition by datepart(dw,Zakaz.date1)
order by max(WhatToZakaz.number) desc)
помоги перевести на язык oracle(только начал изучение и ступор)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.02.2016, 00:42
Ответы с готовыми решениями:

Oracle SQL Server
Есть ли возможность каким-то образом поработать с ним из-под обычной винды? У MS есть спец. редакции, здесь же я скачал oracle developer...

Экспорт из Oracle в MS SQL Server
Нужно експортировать базу данных из Oracle в MS SQL Server. Експорт и импорт должен осуществляться командным файлом Windows. Помогите

Переписать из Oracle в SQL SERVER
CREATE OR REPLACE TRIGGER Trigger_Section BEFORE DELETE ON Sections FOR EACH ROW DECLARE @CNT integer SET @CNT = 0; LINK_EXIST...

83
0 / 0 / 0
Регистрация: 12.02.2016
Сообщений: 54
12.02.2016, 14:45  [ТС]
Студворк — интернет-сервис помощи студентам
Error at line 24: PL/SQL: Statement ignored
0
765 / 666 / 194
Регистрация: 24.11.2015
Сообщений: 2,163
12.02.2016, 14:47
Была ошибка там, которую я пропустил, перенося функцию из своей базы в вашу. Только почему носом в нее не тыкали, не пойму.
0
0 / 0 / 0
Регистрация: 12.02.2016
Сообщений: 54
12.02.2016, 14:54  [ТС]
а что значит эта ошибка? ничего путного в инете нет
0
765 / 666 / 194
Регистрация: 24.11.2015
Сообщений: 2,163
12.02.2016, 15:06
Попробуем сделать отладку. Для этого надо включить серверный вывод. Возможно, для этого у Вас есть специальная кнопка. Но можно включить командой
SET server output ON
/

Затем в той же сесии надо выполнить анонимный блок. Я убрал все лишние буквы от полной безнадеги.
Пришлите ошибки, если выдаст. Может и отладку выдаст. Тогда вообще замечательно будет.
Oracle 11 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
DECLARE 
    pDishId NUMBER:="номер без кавычек!!!";
    fmt     VARCHAR2(10) :='ww';
    pBaseDate DATE := TRUNC(SYSDATE);
    id0     NUMBER := NULL;
BEGIN
FOR vv IN (
SELECT id FROM (
SELECT idDish id, ROW_NUMBER() OVER (ORDER BY cnt DESC) nn
FROM (
SELECT w.idDish, SUM(w.numberr) cnt
FROM Zakaz z,
WhatToZakaz w,
WhatToZakaz b
WHERE w.idZakaz = z.idZakaz
AND b.idZakaz = z.idZakaz
AND w.idDish <> pDishId
AND b.iddish = pDishId
AND TRUNC(z.date1, ''''||fmt||'''') = TRUNC(pBaseDate, ''''||fmt||'''')
GROUP BY w.idDish
)) WHERE nn=1)
LOOP
id0 := vv.id;
END LOOP;
dbms_output.put_line('vDishId='||id0);--отладка
END;
Добавлено через 55 секунд
Цитата Сообщение от Max913 Посмотреть сообщение
Error at line 24
Вообще он должен номер какой-то сказать со словом ORA
0
0 / 0 / 0
Регистрация: 12.02.2016
Сообщений: 54
12.02.2016, 15:12  [ТС]
ORA-06550: line 19, column 11:
PLS-00225: subprogram or cursor 'Z' reference is out of scope
ORA-06550: line 19, column 11:
PL/SQL: ORA-00904: "Z"."DATE1": invalid identifier
ORA-06550: line 8, column 1:
PL/SQL: SQL Statement ignored
ORA-06550: line 23, column 8:
PLS-00364: loop index variable 'VV' use is invalid
ORA-06550: line 23, column 1:
PL/SQL: Statement ignored



вставляю команды в sql commands
работаю на apex
0
765 / 666 / 194
Регистрация: 24.11.2015
Сообщений: 2,163
12.02.2016, 15:22
Цитата Сообщение от Max913 Посмотреть сообщение
PL/SQL: ORA-00904: "Z"."DATE1": invalid identifier
Он говорит, что у Вас в таблице с алиасом Z, то есть в таблице Zakaz нет поля, которое бы называлось date1, или с ним какая-то проблема.
А в каком-то селекте у Вас было такое. И по схеме я в заказе даты не вижу. Ну-ка, ищите дату в заказе, и точное название давайте. Может там у Вас даже не тип даты, а какой-то другой тип?

Можете вставить DDL-ку на таблицу ZAKAZ (create table zakaz и так далее)
0
0 / 0 / 0
Регистрация: 12.02.2016
Сообщений: 54
12.02.2016, 15:24  [ТС]
вывел vDishId=

DDL это что?
0
765 / 666 / 194
Регистрация: 24.11.2015
Сообщений: 2,163
12.02.2016, 15:31
Цитата Сообщение от Max913 Посмотреть сообщение
вывел vDishId=
Да, это хорошо.
Там в блоке надо
pDishId NUMBER:="номер без кавычек!!!";
Я позже исправил, Вы могли не заметить.

Добавлено через 2 минуты
Цитата Сообщение от Max913 Посмотреть сообщение
DDL это что?
С апексом у меня проблемы. Не знаю, как там это делать. Но у Вас есть какой-нибудь конструктор таблиц. Пришлите как можно полнее окошко конструктора таблицы ZAKAZ.

Добавлено через 2 минуты
Интересно, а как он мог после ошибок еще и
vDishId=
вывести? Вдруг заработал?
0
0 / 0 / 0
Регистрация: 12.02.2016
Сообщений: 54
12.02.2016, 15:31  [ТС]
сам код таблицы
Oracle 11 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
CREATE TABLE  "ZAKAZ" 
   (    "IDZAKAZ" NUMBER, 
    "IDVISITORS" NUMBER NOT NULL ENABLE, 
    "DATA" TIMESTAMP (6) WITH LOCAL TIME ZONE, 
    "IDSTUFF" NUMBER, 
    "TOTAL" NUMBER, 
     CONSTRAINT "ZAKAZ_CON" PRIMARY KEY ("IDZAKAZ") ENABLE
   )
/
ALTER TABLE  "ZAKAZ" ADD CONSTRAINT "ZAKAZ_CON1" FOREIGN KEY ("IDVISITORS")
      REFERENCES  "VISITORS" ("IDVISITORS") ENABLE
/
ALTER TABLE  "ZAKAZ" ADD CONSTRAINT "ZAKAZ_CON2" FOREIGN KEY ("IDSTUFF")
      REFERENCES  "STUFF" ("IDSTUFF") ENABLE
/
 
CREATE OR REPLACE TRIGGER  "BI_ZAKAZ" 
  before INSERT ON "ZAKAZ"               
  FOR each ROW  
BEGIN   
  IF :NEW."IDZAKAZ" IS NULL THEN 
    SELECT "ZAKAZ_SEQ".NEXTVAL INTO :NEW."IDZAKAZ" FROM sys.dual; 
  END IF; 
END; 
 
/
ALTER TRIGGER  "BI_ZAKAZ" ENABLE
/
ошибки исправил просто и он вывел

вставил
Oracle 11 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
DECLARE 
pDishId NUMBER:=1;
fmt VARCHAR2(10) :='ww';
pBaseDate DATE := TRUNC(SYSDATE);
id0 NUMBER := NULL;
BEGIN
FOR vv IN (
SELECT id FROM (
SELECT idDish id, ROW_NUMBER() OVER (ORDER BY cnt DESC) nn
FROM (
SELECT w.idDish, SUM(w.numberr) cnt
FROM Zakaz z,
WhatToZakaz w,
WhatToZakaz b
WHERE w.idZakaz = z.idZakaz
AND b.idZakaz = z.idZakaz
AND w.idDish <> pDishId
AND b.iddish = pDishId
AND TRUNC(z.data, ''''||fmt||'''') = TRUNC(pBaseDate, ''''||fmt||'''')
GROUP BY w.idDish
)) WHERE nn=1)
LOOP
id0 := vv.id;
END LOOP;
dbms_output.put_line('vDishId='||id0);--отладка
END;
вывел ORA-01899: bad precision specifier
Миниатюры
Перевести из ms sql server  в oracle  
0
765 / 666 / 194
Регистрация: 24.11.2015
Сообщений: 2,163
12.02.2016, 15:40
Цитата Сообщение от Max913 Посмотреть сообщение
сам код таблицы
Это и есть DDL-ка
Цитата Сообщение от Max913 Посмотреть сообщение
"DATA" TIMESTAMP (6) WITH LOCAL TIME ZONE,
Очень печально, что тип TIMESTAMP, а не DATE. Но сейчас что-нибудь придумаем

Добавлено через 3 минуты
Выполните селект
SELECT CASE WHEN trunc(systimestamp,'ww')=trunc(sysdate,' ww') THEN 1 ELSE 0 end FROM dual;

и покажите результат
0
0 / 0 / 0
Регистрация: 12.02.2016
Сообщений: 54
12.02.2016, 15:42  [ТС]
вот результат
Миниатюры
Перевести из ms sql server  в oracle  
0
765 / 666 / 194
Регистрация: 24.11.2015
Сообщений: 2,163
12.02.2016, 15:43
Замечательно! Подправьте строчку в анонимном блоке
AND trunc(z."DATA", ''''||fmt||'''') = trunc(pBaseDate, ''''||fmt||'''')

и попробуйте его выполнить. Выдаст ошибки с ORA- ?
0
0 / 0 / 0
Регистрация: 12.02.2016
Сообщений: 54
12.02.2016, 15:44  [ТС]
да, ORA-01899: bad precision specifier
0
765 / 666 / 194
Регистрация: 24.11.2015
Сообщений: 2,163
12.02.2016, 16:05
Цитата Сообщение от Max913 Посмотреть сообщение
да, ORA-01899: bad precision specifier
Та-ак. А теперь уберем апострофы. Вернемся к исходному варианту

AND trunc(z.data, fmt) = trunc(pBaseDate, fmt)
0
0 / 0 / 0
Регистрация: 12.02.2016
Сообщений: 54
12.02.2016, 16:07  [ТС]
vDishId=10
сработал и вывел это
0
765 / 666 / 194
Регистрация: 24.11.2015
Сообщений: 2,163
12.02.2016, 16:08
Цитата Сообщение от Max913 Посмотреть сообщение
сработал и вывел это
Хорошо. Теперь ту же строчку в функцию, и попробовать какой-нибудь селект с функцией
0
0 / 0 / 0
Регистрация: 12.02.2016
Сообщений: 54
12.02.2016, 16:17  [ТС]
дадада!! он что-то вывел..
Миниатюры
Перевести из ms sql server  в oracle  
0
765 / 666 / 194
Регистрация: 24.11.2015
Сообщений: 2,163
12.02.2016, 16:19
Цитата Сообщение от Max913 Посмотреть сообщение
дадада!! он что-то вывел..
И даже похоже на правду. Подумайте по поводу изложенного в посте 38, а я пока на селект посмотрю
0
0 / 0 / 0
Регистрация: 12.02.2016
Сообщений: 54
12.02.2016, 16:22  [ТС]
так нам максимум и нужен, если я все правильно поняла
0
765 / 666 / 194
Регистрация: 24.11.2015
Сообщений: 2,163
12.02.2016, 16:28
Цитата Сообщение от Max913 Посмотреть сообщение
так нам максимум и нужен
Максимум, но от чего? От суммы или от отношенния сумм?
Кстати, в функции count(*) на SUM(w.numberr) заменили? Или пока не будете?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.02.2016, 16:28

Импорт данных из Oracle в SQL Server
Из одной таблицы в оракловой БД нужно скопировать данные в таблицу MS SQL средствами c# VS08. Делаю так: string connectionString1 =...

2-е одинаковые базы в SQL Server и Oracle
Здравствуйте. Кто знает, помогите, пожалуйста. У меня на работе есть 2-е программы (Для удобства буду называть их П1 и П2), написанные...

Переучиться с Oracle на Microsoft SQL Server
Насколько это сложно? Сколько времени это может занять? Заранее спасибо.

Сравнение SQL Server 2005 и Oracle 10g
Итак, нужно провести сравнительную характеристику SQL Server 2005 и Oracle 10g. Нужно сравнить по основным параметрам, типа: аппаратные...

Oracle: MySQL будет конкурировать с Microsoft SQL Server
Корпорация Oracle сегодня рассказала о своих дальнейших планах в отношении открытой СУБД MySQL, владельцем которой она стала при покупке...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Опции темы

Новые блоги и статьи
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru