![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Передача в хранимую процедуру имени таблицы [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.