Что такое хранимые процедуры vk api

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

То есть фактически процесс покупки товара охватывает несколько действий, которые должны выполняться в определенной последовательности. И в этом случае более оптимально будет инкапсулировать все эти действия в один объект — хранимую процедуру (stored procedure).

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

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

Урок 5. Хранимые процедуры в MS SQL Server

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

Для создания хранимой процедуры применяется команда CREATE PROCEDURE или CREATE PROC .

Таким образом, хранимая процедура имеет три ключевых особенности: упрощение кода, безопасность и производительность.

Например, пусть в базе данных есть таблица, которая хранит данные о товарах:

CREATE TABLE Products ( Id INT IDENTITY PRIMARY KEY, ProductName NVARCHAR(30) NOT NULL, Manufacturer NVARCHAR(20) NOT NULL, ProductCount INT DEFAULT 0, Price MONEY NOT NULL );

Еще по теме:  Вы используете приложение в котором недоступны аудиозаписи Вконтакте

Создадим хранимую процедуру для извлечения данных из этой таблицы:

USE productsdb; GO CREATE PROCEDURE ProductSummary AS SELECT ProductName AS Product, Manufacturer, Price FROM Products

Поскольку команда CREATE PROCEDURE должна вызываться в отдельном пакете, то после команды USE, которая устанавливает текущую базу данных, используется команда GO для определения нового пакета.

После имени процедуры должно идти ключевое слово AS.

Для отделения тела процедуры от остальной части скрипта код процедуры нередко помещается в блок BEGIN. END:

USE productsdb; GO CREATE PROCEDURE ProductSummary AS BEGIN SELECT ProductName AS Product, Manufacturer, Price FROM Products END;

После добавления процедуры мы ее можем увидеть в узле базы данных в SQL Server Management Studio в подузле Programmability -> Stored Procedures :

Создание хранимых процедур в MS SQL Server

И мы сможем управлять процедурой также и через визуальный интерфейс.

Выполнение процедуры

Для выполнения хранимой процедуры вызывается команда EXEC или EXECUTE :

4. Базы данных. Транзакции. Триггеры и хранимые процедуры | Технострим


EXEC ProductSummary

Выполнение хранимых процедур в MS SQL Server

Удаление процедуры

Для удаления процедуры применяется команда DROP PROCEDURE :

DROP PROCEDURE ProductSummary

Источник: metanit.com

Хранимые процедуры: описание, лимиты и примеры

image

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

Хранимые процедуры позволяют исполнять код на стороне сервера API аналогично методу execute, но без передачи кода процедуры по сети.

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

Создавать новые хранимые процедуры Вы можете на соответствующей вкладке раздела редактирования Вашего приложения.

Код для хранимых процедур пишется на VKScript языке.

image

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

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

Лимиты

Макс. запросов в секунду 3
Макс. размер ответа 5 МБ
Макс. кол-во обращение внутри процедуры к методам API 25
Макс. кол-во операций внутри процедуры 1000
Еще по теме:  Как удалить почту созданную через vk id

Мои процедуры

    Умный поиск людей, без даты рождения и точного города — не важно указан у пользователя в профиле город или дата рождения.

execute.userSearch

  • Шаг 1
    1. ФИО, дата рождения, город. По данным полям ищем совпадения среди аккаунтов сети Вконтакте, у которых есть фото. В случае, если находим 2 и более аккаунтов используем тот, у которого дата последнего входа максимальна. В случае, если ничего не найдено переходим на Шаг 2.
    2. Шаг 2
      1. Используя данные по фамилии и имени, дате рождения производим повторный поиск.
        В случае, если находим 2 и более аккаунтов, переходим на Шаг 3.2. В случае, если ничего не найдено переходим на Шаг 3.3.
      2. Шаг 3
        1. Ищем 10 самых популярных групп выбранного города Вконтакте.
        2. В этих группах ищем по ФИ, Дате рождения, страна Россия, есть фото. Если что-то нашлось, то сохраняем текущий результат, иначе идем в шаг 3.3.
        3. По группам ищем по ФИ, страна Россия, есть фото. Если что-то нашлось сохраняем результат, иначе «пусто».

        execute.getFriendsBDates
        execute.getMembers

        var members = API.groups.getMembers().items; // делаем первый запрос и создаем массив var offset = 1000; // это сдвиг по участникам группы while (offset < 25000 (offset + Args.offset) < Args.total_count) // пока не получили 20000 и не прошлись по всем участникам < members = members + «,» + API.groups.getMembers().items; // сдвиг участников на offset + мощность массива offset = offset + 1000; // увеличиваем сдвиг на 1000 >; return members;
        execute.getFriends
        var user_ids = Args.user_ids.split(‘,’); var friends = API.friends.get().items; var i = 1; while (user_ids.length > i i < 25) < friends = friends + «,» + API.friends.get().items; i = i + 1; > return friends;
        execute.isMemberGroups
        var groups = API.groups.search().items; var members = []; var i = 0; while (groups.length > i) < var groupIsMember = []; groupIsMember.members = API.groups.isMember(); groupIsMember.group_id = groups[i].id; members.push(groupIsMember); i = i + 1; > return members;

        Источник: habr.com

        Saved searches

        Use saved searches to filter your results more quickly

        Cancel Create saved search

        You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window.

        Reload to refresh your session.

        voronind / vk Public

        Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

        By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

        Already on GitHub? Sign in to your account

        Использование метода execute #53

        bonlime opened this issue Sep 17, 2015 · 2 comments

        Использование метода execute #53

        bonlime opened this issue Sep 17, 2015 · 2 comments

        bonlime commented Sep 17, 2015

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

        никак не могу понять, как можно передать параметры. python ругается на знак ‘?’ между именем процедуры и параметрами.

        Пытался делать так:
        response = vkapi.execute.proc_name?parametr1 = 12345

        The text was updated successfully, but these errors were encountered:

        Источник: github.com

        Рейтинг
        ( Пока оценок нет )
        Загрузка ...