Страница 1 из 4 123 ... ПоследняяПоследняя
Показано с 1 по 10 из 33

Тема: Получение данных из MS SQL в MasterSCADA

  1. #1

    По умолчанию Получение данных из MS SQL в MasterSCADA

    Добрый день! Суть такова: имеется БД MS SQL, в которой архивируется состояние системы другой скадой. Требуется из этой базы данных получать эту информацию (так же как и при опросе ОРС сервера) и обрабатывать её в MasterSCADA. Не как не могу написать запрос в БД или по другому - написать процедуру получения данных, в SQL не силен. Может кто поможет и выложит примерчик написания хранимой процедуры??? Нужно по ID параметра получить его последнее значение.

  2. #2

    По умолчанию

    Вам нужен только текст процедуры?
    Ну например вот такой. Создает процедуру которая возвращает из таблицы MyTable, поле MyName, ID которого равен значению MyID
    CREATE PROCEDURE (@MyID int, @MyName int output)
    AS
    BEGIN
    SELECT @MyName=name from MyTable where ID=@MyID;
    END
    GO
    Спасибо.

  3. #3

    По умолчанию

    Цитата Сообщение от SCADAMaster Посмотреть сообщение
    Вам нужен только текст процедуры?
    Ну например вот такой. Создает процедуру которая возвращает из таблицы MyTable, поле MyName, ID которого равен значению MyID
    CREATE PROCEDURE (@MyID int, @MyName int output)
    AS
    BEGIN
    SELECT @MyName=name from MyTable where ID=@MyID;
    END
    GO
    Да, в принципе меня устроит только текст процедуры.
    По Вашему примеру, как я понимаю, таблица MyTable содержит только одну строчку с ID = MyID. И эта строка постоянно обновляется. Такой пример я уже пробовал, все работает. Но в моей таблице содержится множество строк с ID = MyID, различие в них в том, что они содержат еще метку времени (т.е. когда были помещены в таблицу). Вот мне как раз и нужно выбрать последнее значение записи с ID = MyID. В таблице имеется столбец Value. Структура таблицы такова: ID, Time, Value.
    Help me please!!!

  4. #4

    По умолчанию

    Ну сделайте тогда такой запрос:
    SELECT TOP 1 @MyName=name from MyTable where ID=@MyID;
    Спасибо.

  5. #5

    По умолчанию

    Цитата Сообщение от SCADAMaster Посмотреть сообщение
    Ну сделайте тогда такой запрос:
    SELECT TOP 1 @MyName=name from MyTable where ID=@MyID;
    Спасибо за содействие.
    Попробовал сделать такой запрос, в результате постоянно принимаю значение самой первой записи в таблице с ID=@MyID.
    Мне кажется, что в запросе должно присутствовать условие с использованием значения Time.
    Последний раз редактировалось energy_aleks; 18.03.2011 в 14:56.

  6. #6

    По умолчанию

    Тогда так:
    SELECT TOP 1 @MyName=name from MyTable where ID=@MyID ORDER BY [TIME] DESC
    Спасибо.

  7. #7

    По умолчанию

    Цитата Сообщение от SCADAMaster Посмотреть сообщение
    Тогда так:
    SELECT TOP 1 @MyName=name from MyTable where ID=@MyID ORDER BY [TIME] DESC
    Да, данная комбинация вроде заработала , но время выборки происходит очень долго около 45сек. для одного параметра. А я предполагаю делать выборки для примерно 20 параметров. С чем это может быть связано. И как ускорить процесс выборки?

  8. #8

    По умолчанию

    Нужно задать индекс (первичный ключ) <ID, TIME>
    Спасибо.

  9. #9

    По умолчанию

    Цитата Сообщение от SCADAMaster Посмотреть сообщение
    Нужно задать индекс (первичный ключ) <ID, TIME>
    А вот про это можно по подробнее.

  10. #10

    По умолчанию

    В Managment Studio вызовите контекстное меню у таблицы, выберите "Индексы и ключи". Добавьте ключ, выберите столбцы ID и Time.
    Спасибо.

Страница 1 из 4 123 ... ПоследняяПоследняя

Ваши права

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