Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Передача в хранимую процедуру имени таблицы [D7, XP]


mefodiy ©   (2008-07-16 22:42:00) 

Создаю хранимую процедуру:

CREATE PROCEDURE DbName.MyProc
(IN f_table VARCHAR(20))
SELECT * FROM f_table;

Но когда вызываю ее:

CALL DbName.MyProc('Vendor');

то получаю ошибку
"Table DbName.f_table doesn't exists".

Что, нельзя передавать в ХП имя таблицы как параметр, или я что-то не так делаю?
Спасибо.


ПРавильный$Вася   (2008-07-21 20:16:00) [1]


> Оценил всеобщее остроумие!

ты не на форму смотри, а на содержание
зри, как грится, в корень!


mefodiy   (2008-07-21 20:12:00) [2]

Оценил всеобщее остроумие!


ЮЮ   (2008-07-21 04:47:00) [3]

> Нашел в интернете следующее простое решение:


А дополнение к этому решению не предлагают, типа

CALL DbName.MyProc('Vendor DELETE FROM Vendor')


Правильный$Вася   (2008-07-20 19:59:00) [4]


>  следующее простое решение:

в нормальных условиях такие танцы нужны только для черезчур вывихнутых ситуаций
а когда эта вывихнутость превращается в в обыденность, то [7]


turbouser   (2008-07-19 12:27:00) [5]


> mefodiy   (19.07.08 12:25) [6]

Всеравно в консерватории бардак.


mefodiy   (2008-07-19 12:25:00) [6]

Нашел в интернете следующее простое решение:

CREATE PROCEDURE DbName.MyProc
(IN f_table VARCHAR(20))
BEGIN
 SET @s=CONCAT('SELECT * FROM ',f_table);
 PREPARE stmt FROM @s;
 EXECUTE stmt;
END


stas   (2008-07-17 23:00:00) [7]

В Mssql это можно сделать, но не совсем так просто, в My - незнаю


Anatoly Podgoretsky   (2008-07-17 22:50:00) [8]

> turbouser  (16.07.2008 23:35:03)  [3]

> Стоит заметить, что такие вопросы возникают при неправильном проектировании.

такие вопросы возникают при неправильном выборе профессии.


turbouser   (2008-07-16 23:35:00) [9]


> mefodiy   (16.07.08 22:42)  

Стоит заметить, что такие вопросы возникают при неправильном проектировании.
Естественно, есть исключения, но врядли в этом случае.


Правильный$Вася   (2008-07-16 23:01:00) [10]

не знаю, как в MySQL, но в нормальных серверах нельзя, т.к. сервер при компиляции ХП не может проверить корректность запроса
если MySQL Поддерживает динамический SQL внутри типа EXECUTE STATEMENT, то можно попробовать


mefodiy   (2008-07-16 22:43:00) [11]

Да, забыл сказать, что использую MySQL.


Наверх

Титульная страница Поиск, карта сайта Написать письмо