Форум программистов, компьютерный форум, киберфорум
Oracle
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/21: Рейтинг темы: голосов - 21, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 12.02.2016
Сообщений: 54

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

12.02.2016, 00:42. Показов 5289. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml, в чате форсили функторы модулей как суперфичу. Пытаясь отдуплить концепт, наткнулся на тутор с простым примером. А главный принцип обучения от. . .
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru