Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.11.2012, 22:48   #1
WizarD.89
Форумчанин
 
Аватар для WizarD.89
 
Регистрация: 02.12.2010
Сообщений: 160
Радость Хранимая процедура.

Здравствуйте !Я только начинаю изучать БД;

Как я понял хранимая процедура возвращает только число. ИЛИ нет? может она может возвращаться таблицу я не понял....

То есть что это будет значит

Код:
CREATE  PROCEDURE main as 
select *
from artist

получается это процедура вернет таблицу artist или нечего не вернет?
WizarD.89 вне форума Ответить с цитированием
Старый 23.11.2012, 23:06   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Она не вернет ничего, потому что она неправильно описана.
ХП зависят от СУБД, и их синтаксис различен для каждой системы. А в целом она может возвращать либо скалярную величину (число, строку ...) либо таблицу (сформированную запросом на основании существующих таблиц, или сгенерированную искуссвенно, таблицу определенную в рамках самой функции, и на самом деле не существующей в базе).
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.11.2012, 23:35   #3
WizarD.89
Форумчанин
 
Аватар для WizarD.89
 
Регистрация: 02.12.2010
Сообщений: 160
По умолчанию

Stilet на самом деле она описана правильно. У меня MS sql и соответственно язык на котором я пишу ХМ будет transact-sql.

Результат это кода в SQL Server Management Studio аналогичен
простой выборке.

Код:
select *
from artist
Только не понятно будет ли ХП передавать эту таблицу приложению?
WizarD.89 вне форума Ответить с цитированием
Старый 23.11.2012, 23:41   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Будет. Можно выполнить запросом EXEC main и AdoQuery.Open
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 23.11.2012, 23:48   #5
WizarD.89
Форумчанин
 
Аватар для WizarD.89
 
Регистрация: 02.12.2010
Сообщений: 160
По умолчанию

Понятно. Получается ХМ может одновременно вернуть приложению RETURN и таблицу?

SQL Server Management Studio так и показывает, если написать просто выборку в ХП, он показывает и таблицу и то что должно вернуть Return, то есть у меня 0

А еще я сейчас написал в ХП две выборки и он вернул в SQL Server Management Studio две таблицы и return value 0

Последний раз редактировалось Stilet; 23.11.2012 в 23:59.
WizarD.89 вне форума Ответить с цитированием
Старый 23.11.2012, 23:56   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Одновременно нет. Или таблицу или OUTPUT парметры через AdoCommand

Цитата:
А еще я сейчас написал в ХП две выборки и он вернул в SQL Server Management Studio две таблицы и return value 0
Studio и ADO в проге немного разные вещи
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 23.11.2012, 23:59   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Странно... Я всегда думал что запрос в процедуре нужно брать в ()... И Return вроде должен быть
Впрочем может это особенность MS SQL 2008...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.11.2012, 00:04   #8
WizarD.89
Форумчанин
 
Аватар для WizarD.89
 
Регистрация: 02.12.2010
Сообщений: 160
По умолчанию

Аватар можно пример ХП на t-sql которая возвращает определенную таблицу приложению
WizarD.89 вне форума Ответить с цитированием
Старый 24.11.2012, 00:11   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

http://msdn.microsoft.com/en-us/libr...sql.80%29.aspx
http://msdn.microsoft.com/en-us/libr...SQL.80%29.aspx
Подойдет пример?
Кстати твой Server Management Studio позволяет в дереве объектов базы создавать функцию Table returned - это и есть функция, возвращающая запрос
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.11.2012, 00:16   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Чем не устраивает пример в #1?
см http://msdn.microsoft.com/ru-ru/libr...=sql.100).aspx
Цитата:
И Return вроде должен быть
В MS SQL это просто немедленный выход из процедуры. Да и с помощью его можно вернуть нечто типа кода завершения. Как в проге его скушать никогда не пробовал
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хранимая процедура Jrcfyf БД в Delphi 1 14.02.2012 18:45
Хранимая процедура Ellkat SQL, базы данных 0 22.05.2011 17:02
Хранимая процедура. Cartman18 БД в Delphi 21 08.05.2010 18:56
хранимая процедура serg369 SQL, базы данных 4 07.02.2010 14:33
Хранимая процедура. nimf БД в Delphi 2 22.04.2008 13:16