Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 15.06.2018, 12:10
nixon232 nixon232 вне форума
Активный
 
Регистрация: 26.01.2014
Сообщения: 282
Версия Delphi: delphi xe4
Репутация: выкл
По умолчанию Очень глупый вопрос о Хранимых процедурах

Пытаюсь понять и разобраться в этом вопросе и мне не понятен 1 момент.

Правильно ли я понимаю, что хранимые процедуры зарание никак не описать на сервере и чтобы их вызвать мы должны в наш Sql Запрос пихать полное их описание, потом использовать TFDStoredProc?

Если так, то это нужно делать после каждого отключения от сервера?
Понимаю, что вопрос крайне простой, но такая логика кажется мне странной
Либо, если мы их не дропаем - то мы их описали и можем просто вызвать из делфи?

Последний раз редактировалось nixon232, 15.06.2018 в 12:12.
Ответить с цитированием
  #2  
Старый 15.06.2018, 13:27
nixon232 nixon232 вне форума
Активный
 
Регистрация: 26.01.2014
Сообщения: 282
Версия Delphi: delphi xe4
Репутация: выкл
По умолчанию

Грубо говоря, ответ :
Цитата:
Либо, если мы их не дропаем - то мы их описали и можем просто вызвать из делфи?
Ответить с цитированием
  #3  
Старый 15.06.2018, 19:14
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Сам спросил, сам ответил

Да, собственно, хранимая процедура это и есть код, который хранится и выполняется в БД. Условно говоря, один раз создали (обычно не из программы, а при создании БД), потом вызываем любое кол-во раз. Соответственно, код процедуры должен быть нейтральным к данным, т.е. у тебя обычно нет возможности менять его для каждого вызова.
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
nixon232 (16.06.2018)
  #4  
Старый 15.06.2018, 21:44
nixon232 nixon232 вне форума
Активный
 
Регистрация: 26.01.2014
Сообщения: 282
Версия Delphi: delphi xe4
Репутация: выкл
По умолчанию

Да, на первый вопрос удалось найти ответ самому. Если можно я еще "потуплю" на тему еще тк. гугл как-то не помогает с этим.
1 можно ли вирнуть функцией не одно значение а нейкий "результат запроса"? (думаю, что нет, уверености нет)

2. можно в конце процедуры "вернуть" набор переменных? без учета out.
то есть что--типа
Код:
BEGIN
DECLARE pid int;
DECLARE pMSG int DEFAULT -1;
set pid =2;
set pMSG =3

SELECT pid, pmsg;
END//  
Ответить с цитированием
  #5  
Старый 15.06.2018, 23:24
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

1. Да, можно. Тогда процедура должны возвращать либо курсор, либо датасет (зависит от сервера), а на клиенте надо делать что-то типа
Код:
select * from stored_proc_name(:param,...)
2. Нет. Только как курсор.
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
nixon232 (16.06.2018)
  #6  
Старый 16.06.2018, 10:22
nixon232 nixon232 вне форума
Активный
 
Регистрация: 26.01.2014
Сообщения: 282
Версия Delphi: delphi xe4
Репутация: выкл
По умолчанию

Пытаюсь создать простенькую тестовую ф-ю и упорно не компилирует
Код:
DELIMITER //

CREATE FUNCTION IsUser (IN UserName VARCHAR (50)) RETURNS INTEGER
BEGIN
 DECLARE RetVal INTEGER;
SELECT id INTO RetVal FROM table WHERE user=UserName;
 RETURN IFNULL(RetVal, 0);
END //

   DELIMITER ;
и проблема в том, что я не понимаю на что имено Он ругается. Якобы на строку 1, но там делимитер переназначается же
Цитата:
;
/* SQL Error (1064): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IN UserName VARCHAR (50)) RETURNS INTEGER
BEGIN
DECLARE RetVal INTEGER;
SELE' at line 1 */
Менял даже INTEGER на INT
Mysql

Последний раз редактировалось nixon232, 16.06.2018 в 10:43.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:15.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter