Форум программистов, компьютерный форум, киберфорум
Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
1 / 1 / 0
Регистрация: 17.10.2007
Сообщений: 72

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

17.10.2007, 11:22. Показов 2786. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Возник следующий вопрос. Возможно ли написание собственных хранимых процедур в какой либо среде для создания Баз Данных. Т.е. создание Баз Данных из которых данные получаются посредством хранимых процедур.
Поясню для чего это нужно.
В данный момент я пользуюсь OLAP системой 'Контур Стандарт' от компании Intersoft Lab, в ней предусмотрен анализ трех типов данных:
1) Данных, полученных с помощью хранимых процедур (не SQL) головной Базы Данных
2) Данных полученных из связных таблиц
3) Данных полученных из локальных таблиц
Последние два пункта соответствуют анализу последней версии выборки данных, которые со временем устаревают, вследствии чево хотелось бы пользоваться хранимыми процедурами - чтобы иметь всегда самые свежие данные. Но вот тут то и появляется проблема - данные полученные с помощью хранимых процедур можно использовать только с данными также полученными из хранимых процедур. Т.е. нет возможности привязать свой классификатор к данным из головной Базы.
Вот поэтому и хотелось бы написать свою хранимую процедуру (в Access или Visual FoxPro или еще где нибудь) которая просто получала бы данные из того же Access или Visual FoxPro.

Заранее благодарен за любую помощь.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.10.2007, 11:22
Ответы с готовыми решениями:

Запуск хранимых процедур MSSQL
Как из Access VBA запустить хранимую процедуру MSSQL ?

Отладка хранимых процедур в MS SQL 2000
Как можно запустить отладку процедуру в VB или в InterDev

Создание хранимых процедур для Ms Sql Server 2008 r2
Дайте ссылки на материал, или вкраце изложите как написать хранимые процедуры. Не могу понять с какой стороны к этому вопросу подойти. Если...

9
0 / 0 / 0
Регистрация: 16.10.2007
Сообщений: 21
18.10.2007, 11:04
В принципе это возможно. Не знаю как с твоей системой, но работая в Delphi через ADO с Access хранящиеся в базе Queries распознаются системой как хранимые процедуры, при этом они как могут возращать данные, так могут и не возвращать, просто выполняя к.-л. поерацию с базой. В то же время сохраняется возможность работы с Input и Output параметрами... Короче, сказка...
0
1 / 1 / 0
Регистрация: 17.10.2007
Сообщений: 72
18.10.2007, 12:55  [ТС]
Спасибо за ответ. Теперь я чуствую что на верном пути нахожусь ; ))
У меня тоже запросы распознаются как хранимые процедуры, но к сожалению не все. Распознаются ли те, которые содержат параметры.
Однако, при связи с Ассess через ODBC возникает ошибка и данные из этой процедуры не поступают.
Ошибка типа 'Слишком мало параметров', хотя при запуске я задаю значения параметра.
0
1 / 1 / 0
Регистрация: 17.10.2007
Сообщений: 72
18.10.2007, 15:35  [ТС]
Хотел еще раз поблагодарить за помощь, теперь у меня все работает без проблем.
Если интересно, проблема была в следующем:
Запросы в Access действительно воспринимались как хранимые процедуры, когда в них явно указывалось наличие параметра. Проблема была в соответствии типов данных различных приложений.
Т.е. решение проблемы состояло в написании запроса в Access с указанием фиктивного параметра такого типа который существовал бы и в приложении использующем получившуюся хранимую процедуру. В моем случае это был тип SHORT, который трактовался 'Контур Стандартом' как Integer(16).
Одна из полученных хранимых процедур выглядела следующим образом:
/* sp_КлассификаторЛицСчета */
PARAMETERS Сумма Short;
SELECT *
FROM [tblКлассификаторЛицСчета];

Еще раз спасибо за участие !
0
0 / 0 / 0
Регистрация: 16.10.2007
Сообщений: 21
18.10.2007, 15:50
Рад помочь брату по разуму... :-)
0
0 / 0 / 0
Регистрация: 05.12.2007
Сообщений: 3
05.12.2007, 09:35
>1) Данных, полученных с помощью хранимых процедур (не SQL) головной >Базы Данных
>2) Данных полученных из связных таблиц
>3) Данных полученных из локальных таблиц
>Последние два пункта соответствуют анализу последней версии выборки >данных, которые со временем устаревают, вследствии чево хотелось бы >пользоваться хранимыми процедурами - чтобы иметь всегда самые свежие >данные. Это не так. ВСЕ способы получения данных выдают актуальную информацию из БД. Полученные из БД данные не сохраняются. По каждому пользовательскому запросу в Контур Стандарт генерируется SQL-запрос к источнику данных и отображаются те данные, которые были в БД на момент выполнения запроса. Чем хороша хранимая процедура, так это возможностью описания в ней сложных вычислительных алгоритмов, тонкого тюнинга и использования ее параметров для генерации диалога.
0
1 / 1 / 0
Регистрация: 17.10.2007
Сообщений: 72
05.12.2007, 12:12  [ТС]
Спасибо за ответ, но вероятно я не слишком хорошо описал возникающие проблемы и поэтому вы меня не верно поняли.
Изначально проблема стояла в обработке данных полученных из различных источников. Эта поблема возникает из-за того что как правило в головной базе хранятся слишком детализированные данные, избыточные для анализа, которые требуют агрегирования. Классификаторы этих данных скорее всего хранятся в каких либо других источниках. Это происходит потому что у каждого аналитика обычно своя методика анализа и он должен иметь быстрый доступ к методике, для того чтобы быть в состоянии ее изменить.
'Контур Стандарт' изначально не предназначен для работы с несколькими источниками данных одновременно, поэтому здесь возможно лишь два решения проблемы:
1) Допустим классификатор хранится в базе данных Access. Тогда можно просто загрузить данные из головной базы в Access и продолжить анализ с помощью связных таблиц в 'Контур Стандарт'. Это анализ статических данных, т.е. нет прямой связи с головной базой.
2) Либо написать какие либо хранимые процедуры в Access, где описаны сценарии сбора данных из различных источников. Здесь уже будет анализ динамических данных.
Этот подход, насколько я понимаю довольно общий. Более продвинутые OLAP системы имеют в комплекте некую базу данных (буфер). Которая также собирает данные из различных источников и хранит агрегированные даные. Здесь в качестве такого буфера выступает Aceess.
0
0 / 0 / 0
Регистрация: 05.12.2007
Сообщений: 3
05.12.2007, 16:59
Теперь я понял задачу. Речь идет о том, что Вам нужна Витрина данных - отдельная от Хранилища БД, в которой данные более агрегированы и особым образом категоризированы.
На этот счет есть несколько идей:
1. Применить классическое решение - создать витрину данных в OLAP-сервере, т.е. многомерную БД, которая агрегирует в себя данные из центрального хранилища(при этом измерения могут быть подтянуты из дополнительных баз данных) и предназначена для узкой предметной области. Это решение имеет много плюсов и три минуса - цена, необходимость в администрировании и offline.
2. Разработать хранимую процедуру(или view) которая объединяет несколько источников данных и агрегирует данные внутри себя, и на которую будет настроен OLAP-клиент, в данном случае Контур Стандарт.Это то, что Вы и сделали.
3. Разработать view вместо хранимой процедуры. Контур Стандарт будет рассматривать view как таблицу. С view можно объединять таблицы. Кстати, КС сам пошлет запрос с Gropup By, т.е агрегирует данные силами сервера БД, если это не Access, а например MS SQL.
4. Воспользоваться специфическими возможностями конкретного Хранилища данных (если я правильно понял - это Контур Корпорация) по автоматической генерации хранимых процедур. Т.е можно создать в нем справочники - Ваши классификаторы и добавить в объекты, которые Вас интересую, например в счета поля, ссылающиеся на эти справочники. Тогда сгенерируется хранимая процедура, которая будет возвращать данные в необходимых разрезах.

Одно рассуждение. Если OLAP-система умеет хранить данные, то это наверное OLAP-сервер. Если нет - OLAP-клиент (есть правда промежуточный вариант - OLAP-клиент с локальными кубами, но они как правило замкнуты на себя, их данные ни с чем не объединяются). Я к тому, что является ли танкер продвинутой яхтой, это еще вопрос
0
1 / 1 / 0
Регистрация: 17.10.2007
Сообщений: 72
05.12.2007, 20:08  [ТС]
Еще раз спасибо за ответ.
Вы верно подметили - вопрос конечно же в цене и в острой необходимости внедрения тех или иных технологий автоматизации. Пока что меня устаивает и танкер. ; ))
Скажите пожалуйста, а на каком языке был реализован сам 'Контур Стандарт' ?
0
0 / 0 / 0
Регистрация: 05.12.2007
Сообщений: 3
05.12.2007, 20:16
Вот Вы меня и вычислили. OLAP-машина на ANSI C++(между прочим очень быстро работает по сравнению с буржуйскими OLAP-клиентам). Интерфейс на Borland C++ Builder.
Еще хочу сказать, что Вы можете обращаться на support@iso.ru по техническим вопросам.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.12.2007, 20:16
Помогаю со студенческими работами здесь

Создание хранимых процедур, возвращающие общие суммы для заданного года
USE Northwind; --Go --Create PROCEDURE Product_sum --@fname datetime, --@sname datetime -- as --select Sum(UnitPrice) ...

Декорирование хранимых процедур
есть ли возможность навесить метаинформацию на хранимую процедуру, выполняя create procedure, по типу аттрибутов .net?

Использование хранимых процедур
Суть: Есть две хранимые процедуры, А и Б А - главная, Б - дочерняя А должна вызывать Б заданное число раз это А ...

Перенос хранимых процедур
Всем добрый день! Продолжаю изучать SQL после скоропостижного ухода DBA методом "жить хочешь - научишься плавать". ...

Отладка хранимых процедур
Привет всем! Сабж. Заранее благодарен.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru