Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Использование хранимых процедур SQL / 10 сообщений из 10, страница 1 из 1
19.02.2002, 07:01
    #32023337
PQ16
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование хранимых процедур SQL
Прошу помощи! Я до последнего момента и близко не подходил к SQL БД. Но жизнь заставила. Пытаюсь самостоятельно справиться с этим зверем.
Есть хранимая процедура:
CREATE PROCEDURE AnalogLF ( @SD varchar(35), @ND varchar(35))
AS
DECLARE StartDate datetime,
EndDate datetime
SELECT StartDate=CONVERT(datetime,@SD)
SELECT EndDate= CONVERT(datetime,@ND)

INSERT INTO AnalogHisLF(DateTime,TAGN)
SELECT DateTime, Value
FROM AnalogHistory
WHERE DateTime>@StartDate
AND DateTime<@EndDate
AND TagName=’TAGN’
GO

Вот строка запроса из Query SQL:
EXEC AnalogLF(‘02/11/02 15:20:00’, ‘02/11/02 15:25:00’)

Выдает ошибку:
Stored procedur ‘I’ not Found
У меня подозрение, что я что-то напутал с форматом datetime
Я использую MSSQL 6.5
Спасибо.
...
Рейтинг: 0 / 0
19.02.2002, 07:35
    #32023341
MadDog
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование хранимых процедур SQL
Проверьте синтаксис объявления и вызова процедуры по Books Online. По-моему, скобки не нужны ни в create, ни в execute.
Что же касается datetime, объявите Ваши параметры(@SD и @ND) как datetime, тогда не понадобится преобразование в теле процедуры. При этом литералы могут выглядеть примерно так: '2002-11-02 15:20:00', '2002-11-02 15:25:00'.
...
Рейтинг: 0 / 0
19.02.2002, 08:00
    #32023348
PQ16
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование хранимых процедур SQL
Спасибо за ответ. Да действительно скобки там не нужны.
пробывал вводить даты по вашему предложению результат тотже. Пробывал перебирать различные типы данных.Выдавало ошибку Stord procedur 'IOI' not found .
...
Рейтинг: 0 / 0
19.02.2002, 08:03
    #32023349
SergCat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование хранимых процедур SQL
В хранимой процедуре криминала не видно. Вероятно есть триггер на INSERT для AnalogHisLF, который и выдает ошибку.
...
Рейтинг: 0 / 0
19.02.2002, 08:57
    #32023361
SergSuper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование хранимых процедур SQL
Там есть такая утилита командной строки isql.exe

Попробуйте выполнить запрос с её помощью. В отличии от Query SQL эта утилита выдаст место где возникает ошибка и номер строки.
...
Рейтинг: 0 / 0
19.02.2002, 08:59
    #32023362
pq16
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование хранимых процедур SQL
В таблице ни чего нет ана пуста я ее создал для эксперимента
CREAT TABL AnalogHis (DataTime datetime(no null),TAGN real(4))
...
Рейтинг: 0 / 0
19.02.2002, 09:17
    #32023364
pq16
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование хранимых процедур SQL
Там есть такая утилита командной строки isql.exe
Пробывал. Там пишет:
This command did not return data, and it did not return any rows .
SELECT Таблицы выдает пустые строки!
...
Рейтинг: 0 / 0
19.02.2002, 12:58
    #32023396
Использование хранимых процедур SQL
Лучше посмотри на рабочую процедуру и делай так же, как я (в оригинале есть отступы):

SET QUOTED_IDENTIFIER ON
GO
if exists (select * from sysobjects where id = object_id('"dbo"."akBankIncomeFinalizer"') and sysstat & 0xf = 4)
drop procedure "dbo"."akBankIncomeFinalizer"
GO
CREATE PROCEDURE akBankIncomeFinalizer
AS
BEGIN
DECLARE
@I INT,
@Id ABusinessOperationId,
@FOpId AnIdentifier

/* initialize execution state */
DECLARE @Result INT
SET NOCOUNT ON
SET @Result = 0
SET @I = 1

BEGIN TRANSACTION

WHILE (@I <= 5)
BEGIN
SET @Id = NULL

SELECT
TOP 1
@Id = FBIS."Id"
FROM
ABusinessOperation BO
INNER JOIN AFinBankIncomingOperation BIO ON (BO."Id" = BIO."Id")
INNER JOIN AFinBankIncomeSplitted FBIS ON (BIO."Id" = FBIS."Id")
WHERE
(BIO.AssignedRate <> 0.0)
AND (BO."Done" = 0)
AND (BO."RolledBack" = 0)
AND (BIO.FinalizeByJob <> 0)
SET @Result = @@ERROR
IF (@Result <> 0) OR (@Id IS NULL) GOTO fin

EXEC @Result = akFinalizeBankIncomeOperation @Id, @FOpId OUTPUT
IF @Result <> 0 GOTO fin

SET @I = @I + 1
END
/* finalize transaction */
fin:
IF @@TRANCOUNT > 0
BEGIN
IF @Result <> 0 ROLLBACK TRANSACTION ELSE COMMIT TRANSACTION
END
RETURN @Result
END
GO
...
Рейтинг: 0 / 0
19.02.2002, 13:08
    #32023397
pq16
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование хранимых процедур SQL
Всем огромное спасибо!!!!
Я пкопался в доке и нашел решение проблемы

CREATE PROCEDURE AnalogLF @SD varchar(35), @ND varchar(35)
AS
DECLARE StartDate datetime,
EndDate datetime
SELECT StartDate=CONVERT(datetime,@SD,100)код конвертации из 02/11/2002 15:10:00 в дату Feb 11 2002 3:10PM
SELECT EndDate= CONVERT(datetime,@ND,100) понятную SQL
INSERT INTO AnalogHisLF(DateTime,TAGN)
SELECT DateTime, Value
FROM AnalogHistory
WHERE DateTime>@StartDate
AND DateTime<@EndDate
AND TagName=’TAGN’
GO
Теперь усе работает
...
Рейтинг: 0 / 0
19.02.2002, 13:14
    #32023400
SergSuper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование хранимых процедур SQL
2 PQ16

1. тот факт, что если в Query SQL помечен блок, то будет выполняться только он - известен? Такое чувство что у Вас остаётся помеченным блок.

2. С какими параметрами Вы запускали isql? Не может он такого выдать, если в Query SQL совсем другое. Та жа ли была база по умолчанию?

Не читайте что Вам тут насоветовали, просто посмотрите повнимательнее что у Вас написано.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Использование хранимых процедур SQL / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]