Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте!
Помогите разобраться, при создании функции "CREATE FUNCTION my_funct()" тип возвращаемого результата может быть только скалярного типа или можно получить результат типа TABLE?? К примеру что бы можно было использовать "INSERT INTO x(y) SELECT my_funct();" Процедуры в предложении SELECT на сколько я понимаю использовать нельзя. Не большой пример был бы кстати!
Неактивен
Нет, так сделать нельзя: функция возвращает только скалярные данные.
Более того, из процедуры Вы тоже так сделать не сможете. Но сможете
сделать соответствующие изменения прямо в теле процедуры (т.е. делать
сразу INSERT SELECT вместо простого SELECT).
Неактивен
Спасибо!
А в качестве входящего параметра для процедуры столбец таблицы или таблицу передать тоже нельзя??
К примеру следующий код :
->create procedure my_proc1(in y varchar(20))
-> BEGIN
-> insert into test(y) select z.x from z;
-> END
при вызове: "CALL my_proc1(test_int)"
выдает следующую ошибку : "ERROR 1054 (42S22): Unknown column 'test_int' in 'field list' "
Неактивен
Нет, так не получится. Можете передать название строкой, а внутри процедуры
обработать через подготовленные выражения (PREPARED STATEMENTS). Но опыт
показывает, что обобщенное программирование на SQL ни к чему хорошему не
приводит
Неактивен
На данный момент конкретных задач не стоит, просто разбираюсь с функциональностью mysql. Но в любом случае спасибо за ответы!
Неактивен