При разработке отчетов или дашбордов для получения данных зачастую используется Хранимая процедура (Stored Procedure). В этой статье мы поговорим о том, как вызывать хранимые процедуры для популярных источников данных, о тонкостях создания источника данных с хранимыми процедурами и о том, как передавать им параметры.
what is

Что такое хранимая процедура

Хранимая процедура представляет собой SQL-инструкцию, которая позволяет последовательно выполнять набор различных запросов. Её удобно использовать при разработке отчетов и дашбордов, когда один и тот же SQL-запрос постоянно дублируется в различных источниках данных. Поэтому, например, при необходимости редактирования запросов, их придется изменять во всех отчетах. В данном случае, логично будет создать хранимую процедуру в хранилище данных, а при создании источника данных в отчетах просто вызывать лишь эту процедуру. Гибкое применение и есть первое преимущество хранимых процедур.

what is

Другие преимущества использования хранимых процедур

Использование хранимой процедуры повышает производительность в сравнении с обычной последовательностью SQL-инструкции. Это обуславливается тем, что код процедуры компилируется один раз на сервере хранилища данных при первом ее запуске, а затем сохраняется в скомпилированной форме. Также, использование хранимых процедур значительно повышает безопасность, так как при вызове процедуры через сеть виден только вызов на выполнение процедуры. Наименования объектов таблиц и баз данных недоступны, а, соответственно, произвести SQL-инъекции значительно сложнее.

Использование хранимой процедуры в отчетах

Теперь расскажем о том, как можно использовать хранимую процедуру в отчетах. При разработке отчетов и дашбордов, указать текст вызова хранимой процедуры можно в редакторе источника данных при его редактировании или создании. В этом случае, ядро генератора отчетов при построении отчета выполнит запрос с хранимой процедурой, которая будет обработана на сервере с хранилищем данных. В результате будет сформирован ответ с данными, который будет возвращен генератору отчетов. Далее эти данные будут обработаны генератором отчетов и отображены во вьювере в виде отчета или дашборда.

Инициализация хранимой процедуры

При указании текста вызова хранимой процедуры в источнике данных, текст вызова можно инициализировать как Запрос (Query) или Хранимая процедура (Stored Procedure). Установить инициализацию текста вызова можно при помощи параметра Тип (Type), выбрав соответствующее значение как Запрос или Хранимая процедура.

Например, если текст вызова представляет собой запрос с командой выполнения хранимой процедуры, то весь текст вызова следует инициализировать как Запрос. И, соответственно, перед именем хранимой процедуры необходимо указать специальную команду выполнения хранимой процедуры. Более подробно ознакомиться с командами выполнения хранимой процедуры вы можете в спецификации вашего хранилища данных. Мы лишь отметим, что распространенными командами выполнения хранимой процедуры, в зависимости от типа хранилища данных, являютсяexec, execute and call.

В случаях, когда при создании источника данных осуществляется выполнение только хранимой процедуры, текст вызова можно инициализировать как Хранимая процедура. Для этого в тексте вызова достаточно указать только наименование хранимой процедуры, которую необходимо выполнить.

initialization

Параметры хранимой процедуры

При вызове хранимой процедуры можно передавать параметры. Использование параметров для хранимых процедур зависит от инициализации текста вызова как Запрос или Хранимая процедура. В случаях инициализации текста вызова как Запрос, параметры указываются через запятую, с префиксом в виде специального знака @ перед наименованием параметра. Например exec StoredProcedureName @param1, @param2, @param3.

parameters
В случаях инициализации текста вызова как Хранимая процедура, достаточно создать параметры в источнике данных без их указания в тексте. Главное здесь – учитывать последовательность расположения параметров в списке. Они будут применяться последовательно, соблюдая порядок в направлении «сверху-вниз» из перечня параметров.

Также можно получить список необходимых параметров процедуры автоматически. Для этого в тексте вызова следует указать наименование процедуры, параметр Тип установить в значение Хранимая процедура и выбрать команду Получить колонки и параметры (Retrieve Columns and Parameters) из меню Получить колонки (Retrieve Columns).Примечание

В частных случаях источник данных может поддерживать только неименованные параметры (например, OleDB). В случае инициализации текста вызова как Запрос, также важно будет учитывать последовательность параметров в списке. Поскольку неименованные параметры в запросе обозначаются специальным символом ? без указания их наименования.

Кстати, недавно мы опубликовали подробную статью о параметрах в запросе. Все описанное в ней также применимо и к хранимым процедурам. В том числе и то, что в качестве параметров хранимых процедур можно использовать переменные с запросом значения от пользователя или со значением по умолчанию.

Мы рассмотрели ситуацию использования хранимых процедур при разработке отчетов и дашбордов. Использовать запросы и хранимые процедуры – решать только вам, поскольку каждая ситуация требует дополнительного рассмотрения для принятия решения. Stimulsoft лишь предоставляет различные возможности и инструменты, делая процесс разработки отчетов и дашбордов более гибким.

Также мы подготовили подробную видеоинструкцию об использовании хранимой процедуры при построении отчетов.

Если у вас остались вопросы, свяжитесь с нами.
Используя этот сайт, вы соглашаетесь на использование файлов Cookie для аналитики и персонализированного контента. Файлы Cookie хранят полезную информацию на вашем компьютере, чтобы помочь нам повысить эффективность и удобство использования. Для получения дополнительной информации, пожалуйста, прочтите Конфиденциальность и Использование Cookie.