Модераторы: Akella
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание псевдонимов столбцов хранимой процедуры 
V
    Опции темы
Gluttton
Дата 29.11.2010, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: 7
Всего: 54



Доброго времени суток!

Firebird 2.5.
Каким образом можно задать псевдонимы для столбцов выводимых хранимой процедурой?


--------------------
Слава Україні!
PM MAIL   Вверх
Deniz
Дата 29.11.2010, 08:15 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 22
Всего: 44



А что стандартный вариант не работает?
Код
select sp.new_date as out_date from fmtdate(current_date) sp



--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Gluttton
Дата 29.11.2010, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: 7
Всего: 54



Deniz, что то я совсем уже заработался smile ...

А можно сделать так, что бы:
Код

select * from stored_procedure (input_param);


Суть вопроса: вот например в представлении я могу применить агрегатную функцию и назвать выбираемый столбец, а затем обращаясь к представлению "select *" получать "нормальные" имена. А как этого достичь в тех случаях, когда нужно динамически изменять критерий выбора? Т.е. "where column = X", где Х изменяется от запроса к запросу? Я так понимаю хранимой процедурой? Ведь я не могу в представление передавать параметры?


--------------------
Слава Україні!
PM MAIL   Вверх
Deniz
Дата 30.11.2010, 06:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 22
Всего: 44



Gluttton, не совсем понял что нужно, но ...
Код
select * from stored_procedure(:input_param)
select * from my_view where column = :input_param
или нужно что-то другое?


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Akella
Дата 30.11.2010, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Цитата(Gluttton @  29.11.2010,  23:19 Найти цитируемый пост)
 Ведь я не могу в представление передавать параметры? 

но можно 
Код
select from view1 v where v.name = 'Вася'

PM MAIL   Вверх
Gluttton
Дата 30.11.2010, 23:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: 7
Всего: 54



Akella, Deniz, спасибо за понимание, и за то, что "сюскаетесь" со мной.
Что то в этот раз из меня вопрошающий далеко не образцовый smile ...

Итак есть сложная структура (не очень уж и сложная, но  не сильно простая). На стороне клиента необходимо реализовать сложный запрос. Дабы не мучаться на стороне клиента, я "оборачиваю" запрос в представление:
Код

create view v as
select
    column_a as "Понятное_имя_столбца",
    sum (column_b) as "На_русском_языке"
from table
    group by column_a

и вызываю запрос на клиенте таким образом:
Код

select * from v;

Это удобно, т.к. позволяет динамически формировать структуру объекта для заполнения выбраными данными в клиентском приложении. Если выполнять запрос с указанием столбцов, то это не помешает динамически формировать объект...

Кроме того, имеются запросы, которые необходимо фильтровать для пользователей. И в запросе должно присутствовать предложение where person.login = :login . При этом хочется "дергать" запросы так же непринужденно: "select * from". Для этих целей я реализовал хранимую процедуру с параметром, получается что то типа:
Код

select * from sp (login);

Все работает. Но! Я не могу присвоить выводимым столбцам имена на русском языке.

Пните меня, пожалуйста в нужном направлении smile ...

Это сообщение отредактировал(а) Gluttton - 1.12.2010, 00:27


--------------------
Слава Україні!
PM MAIL   Вверх
Deniz
Дата 1.12.2010, 07:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 22
Всего: 44



Gluttton, а мой первый пост не помог?
Код
select 
  sp.return_column1 as "Понятное имя столбца", 
  sp.return_column2 as "На русском языке"
from stored_proc_name(login) sp



--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Gluttton
Дата 2.12.2010, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: 7
Всего: 54



Deniz, ну это как бы выход в данном конкретном случае. 
Но я бы хотел ещё уточнить существует ли возможность создавать псевдонимы столбцов внутри хранимой процедуры?
Я бы не сказал, что меня это ограничивает, скорее удивляет...


--------------------
Слава Україні!
PM MAIL   Вверх
Deniz
Дата 2.12.2010, 06:56 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 22
Всего: 44



Цитата(Gluttton @  2.12.2010,  02:18 Найти цитируемый пост)
Но я бы хотел ещё уточнить существует ли возможность создавать псевдонимы столбцов внутри хранимой процедуры?
вот так?
Код
create procedure sp_name
returns (
  "Понятное имя столбца" varchar(10),
  "На русском языке" varchar(10)
)
as
begin
  /* Procedure Text */
  "Понятное имя столбца" = 'русский';
  "На русском языке" = 'язык';
  suspend;
end



--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Akella
Дата 3.12.2010, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Цитата(Gluttton @  30.11.2010,  23:56 Найти цитируемый пост)
 Я не могу присвоить выводимым столбцам имена на русском языке.

Где, на клиенте?

Добавлено через 42 секунды
Цитата(Gluttton @  2.12.2010,  00:18 Найти цитируемый пост)
Но я бы хотел ещё уточнить существует ли возможность создавать псевдонимы столбцов внутри хранимой процедуры?

это называется вЫходные параметры
PM MAIL   Вверх
Gluttton
Дата 3.12.2010, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: 7
Всего: 54



Цитата(Deniz @  2.12.2010,  06:56 Найти цитируемый пост)
вот так?

Да!

А я почему то пытался делать вот так:
Код

create procedure sp_name
returns (
  val1 varchar(10) as "Понятное имя столбца",
  val2 varchar(10) as "На русском языке"
)
as
begin
  /* Procedure Text */
  val1 = 'русский';
  val2 = 'язык';
  suspend;
end


И конечно же у меня ничего не получалось...

Цитата(Akella @  3.12.2010,  17:40 Найти цитируемый пост)
это называется вЫходные параметры

Спасибо, буду знать.


Deniz, Akella, большое спасибо за терпение и помощь!


--------------------
Слава Україні!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Interbase"
Alex

Обязательно указание:

1. Версию InterBase (Firebird, Yaffil)

2. Способа доступа (ADO, BDE, IBX и т.д.)

  • КАК ПРАВИЛЬНО ОФОРМИТЬ КОД - ЗДЕСЬ
  • КАК ПРАВИЛЬНО УКАЗАТЬ ТЕКСТ ОШИБКИ - ЗДЕСЬ
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • FAQ раздела лежит здесь!

Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Firebird, Interbase | Следующая тема »


 




[ Время генерации скрипта: 0.0761 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.