powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Вопрос про запрос
3 сообщений из 3, страница 1 из 1
Вопрос про запрос
    #35308605
Ivanko117
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем нужно распарсить средствами SQL строку вида : 'Proj1,Proj2,proj3,ProjN...'
(СУБД TeraData) из чего собственно вопрос и возник.
Фишка в том, что эта строка передается входным параметром в макрос:

CREATE MACRO DBT_APP_D.macroNAME
(
projects varchar(2000),
dateIn date,
dateOut date
)
AS
( Select
tmpProject.project_name as Project,
TABLE1.log_id,
TABLE1.success_id,
TABLE1.operation_id,
TABLE1.table_id,
TABLE1.message,
TABLE1.date_change,
TABLE1.time_change
FROM TABLE1
JOIN
(SELECT project_name FROM TABLE2
WHERE project_name IN (:projects))tmpProject

ON TABLE1.message LIKE ('%'||tmpProject.project_name||'%')
WHERE TABLE1.date_change BETWEEN :dateIn AND :dateOut;
);

если в строку WHERE project_name IN (:projects))tmpProject вместо переменной projects поставить значение 'Project1','Project2'... то все работает, а вот с переменной - фиг. Про смысл запроса говорить не буду он и так понятен.
по правам: не могу создать процедуру в базе, только макрос. Много написано про функции парсинга вот тут http://www.sql.ru/articles/mssql/03060701ArraysAndListsInSQLServer.shtml напимер, но функцию создать не получается, параметры объявления отличаются от SQL-Serv. т.к. СУБД закрытая, то мануал крайне скудный все что нашел по созданию функции
CREATE FUNCTION Functions.Square (val Integer)
RETURNS Integer
LANGUAGE C
NO SQL
SPECIFIC Functions.SquareInt
RETURNS NULL ON NULL INPUT
PARAMETER STYLE TD_GENERAL
EXTERNAL SECURITY INVOKER
EXTERNAL NAME 'CS#c:\functionsrc\SquareInt.c#F#SquareInt';

ПОМОГИТЕ кто чем может... Проект стоит... может парсинг во временную таблицу можно в макросе сделать? и как?
...
Рейтинг: 0 / 0
Вопрос про запрос
    #35311809
Inoyat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
CREATE MACRO DBT_APP_D.macroNAME
(
projects varchar( 2000 ), 
dateIn date,
dateOut date
)
AS 
( Select 
tmpProject.project_name as Project,
TABLE1.log_id,
TABLE1.success_id,
TABLE1.operation_id,
TABLE1.table_id,
TABLE1.message,
TABLE1.date_change,
TABLE1.time_change
FROM TABLE1 
JOIN 
(SELECT project_name FROM TABLE2
WHERE project_name IN (:projects))tmpProject 

ON TABLE1.message LIKE ('%'||tmpProject.project_name||'%')
WHERE TABLE1.date_change BETWEEN :dateIn AND :dateOut;
);
вот так надо офформлять запрос
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Вопрос про запрос
    #37805284
Andrey Eliseev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скажите пожалуйста, как создать процедуру, которая будет просто вызывать другие уже созданные процедуры в Teradata?
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Вопрос про запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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