Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.08.24;
Скачать: CL | DM;

Вниз

Передача в хранимую процедуру имени таблицы   Найти похожие ветки 

 
mefodiy   (2008-07-16 22:42) [0]

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

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

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

CALL DbName.MyProc("Vendor");

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

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


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

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


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

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


 
turbouser ©   (2008-07-16 23:35) [3]


> mefodiy   (16.07.08 22:42)  

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


 
Anatoly Podgoretsky ©   (2008-07-17 22:50) [4]

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

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

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


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

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


 
mefodiy   (2008-07-19 12:25) [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


 
turbouser ©   (2008-07-19 12:27) [7]


> mefodiy   (19.07.08 12:25) [6]

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


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


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

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


 
ЮЮ ©   (2008-07-21 04:47) [9]

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


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

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


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

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


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


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

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



Страницы: 1 вся ветка

Текущий архив: 2008.08.24;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.014 c
15-1214155063
Галинка
2008-06-22 21:17
2008.08.24
Asus Eee PC 900


2-1213952414
No_Dead
2008-06-20 13:00
2008.08.24
Как можно составить запрос?


2-1216727543
aam
2008-07-22 15:52
2008.08.24
DDP файлы


2-1216275812
Dymok
2008-07-17 10:23
2008.08.24
Редактирование файлов *.res с 32-битными изображениями


15-1215488789
Slider007
2008-07-08 07:46
2008.08.24
С днем рождения ! 8 июля 2008 вторник