Переменная содержит имя поля - как подставить?

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
Rambo
Сообщения: 1
Зарегистрирован: 09 дек 2004, 14:22

Переменная содержит имя поля - как подставить?

Сообщение Rambo » 09 дек 2004, 15:10

В общем есть процедура с передаваемым параметром
Этот параметр - имя поля
т.е. тапа такого:

Код: Выделить всё

CREATE PROCEDURE PTEST ( LNG VARCHAR(30))
RETURNS ( FIELD_1 VARCHAR(64))
AS
BEGIN
  FOR
    SELECT table1.[b][color=red]:LNG[/color][/b] FROM table1
    INTO
    :FIELD_1  DO
  BEGIN
    SUSPEND;
  END
END


Красным пометил то что естественно не верно
Но как правильно сделать?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 09 дек 2004, 17:12

никак. иди читать про execute statement в FB 1.5. А вообще я заранее предупреждаю, что это bad design - плодить "универсальные" процедуры на все случаи жизни. В этом случае процедура просто не нужна. Не переусерствуй по поводу переноса бизнес-логики на сервер.

Sergey
Сообщения: 21
Зарегистрирован: 27 окт 2004, 04:05

Сообщение Sergey » 10 дек 2004, 04:33

kdv писал(а):Не переусерствуй по поводу переноса бизнес-логики на сервер.
Я смотрю в последнее время все продвинутые разработчики стали отказываться от бизнес-логики на сервере... К чему бы это? Помнится раньше все говорили, что бизнес-логика в одном месте это круто, ибо к одной базе могут обращаться разные программы, при чём написанные разными людьми! По этому должен быть единый интерфейс к базе данных...
Или я отстал от жизни?
И если так уж плох execute statement, то зачем его ввели в полуторке? По моему это довольно удобно (хотя сам пока его не использовал)!

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 10 дек 2004, 12:03

какая же это нафиг "бизнес-логика" на сервере? execute statement это вообще костыли. Например, в delphi тебя не удивляет отсутствие возможности передать имя переменной в переменной? А в SQL что?

я накушался интерпретируемых в переменной выражений еще в 1990-91 годах, на ДИАМС (mumps). С тех пор как то не тянет, и чистого компилятора хватает выше крыши.

Sergey
Сообщения: 21
Зарегистрирован: 27 окт 2004, 04:05

Сообщение Sergey » 14 дек 2004, 05:12

kdv писал(а):какая же это нафиг "бизнес-логика" на сервере? execute statement это вообще костыли. Например, в delphi тебя не удивляет отсутствие возможности передать имя переменной в переменной? А в SQL что?
Когда я говорил про "бизнес-логику", речь шла не о execute statement (далее ES), а о вашей фразе:
kdv писал(а):Не переусерствуй по поводу переноса бизнес-логики на сервер.
Что же касается ES, то соглашусь, что на нём "бизнес-логику" строить не стоит! ES удобен для других вещей и без него приходится наворачивать либо несколько хранимых процедур, либо делать очень большую (навороченную) процедуру, в зависимости от конкретных условий! Сам я пока сижу на FB 1.0.3 (для тех, кто не в курсе, ES появился в полуторке) и в одной процедурке для формирования отчёта ES упростил бы логику...
И что плохого в динамическом формировании SQL запроса, я же в Delphi формирую SQL в зависимости от действий пользователя, почему нельзя формировать запрос на стороне сервера?
Уважаемые мастера, просьба сильно не пинать :) разъясните если что не так...

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 14 дек 2004, 10:10

динамическое формирование любых конструкций - я считаю плохим. это мое личное мнение. кроме того, как Delphi так и PSQL являются компилируемыми языками. Если нравятся интерпретаторы - то тогда самое милое дело в сочетании VB + MS SQL.

Ответить