Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Создание процедуры  [new]
kosyakla
Member

Откуда:
Сообщений: 148
Столкнулся с проблемой, вот код:

CREATE PROCEDURE DeleteOverRows
BEGIN
DECLARE l_last_row_fetched int;
DECLARE oldRecId int;
DECLARE callRecId int;

DECLARE c1 CURSOR FOR
select CallRecordErrorId, CallRecordId from DBA.CallRecordsError where ConnectionTypeId = 14;

DECLARE CONTINUE HANDLER FOR NOT FOUND SET l_last_row_fetched=1;

SET l_last_row_fetched=0;
OPEN c1;
cursor_loop:LOOP
FETCH c1 INTO oldRecId,callRecId;
IF l_last_row_fetched=1 THEN LEAVE cursor_loop; END IF;
update DBA.CallRecordsError set ConnectionTypeId = 10 where CallRecordId = callRecId;
END LOOP cursor_loop;
CLOSE c1;
SET l_last_row_fetched=0;
END;


Когда начал копаться обнаружил, что почему-то SQL Server не выполняет Declare

делаю простейшую процедуры


begin
update table set func = NULL;
end;

если же делаю так

begin
declare test int;
update table set func = NULL;
end;

сразу же выдается ошибка...ткните, что можно сделать..
1 авг 11, 04:44    [11050997]     Ответить | Цитировать Сообщить модератору
 Re: Создание процедуры  [new]
passing_by
Guest
CREATE PROCEDURE proc_name
AS
...
GO
1 авг 11, 05:56    [11051009]     Ответить | Цитировать Сообщить модератору
 Re: Создание процедуры  [new]
Ray D
Member

Откуда: from the middle of nowhere
Сообщений: 3598
Блог
Это какой-то неправильный SQL Server.
1 авг 11, 07:10    [11051033]     Ответить | Цитировать Сообщить модератору
 Re: Создание процедуры  [new]
kosyakla
Member

Откуда:
Сообщений: 148
2008 R2,

выдает такую ошибку: Lookup Error - SQL Server Database Error: 'int' is not a recognized CURSOR option.
1 авг 11, 07:37    [11051050]     Ответить | Цитировать Сообщить модератору
 Re: Создание процедуры  [new]
kosyakla
Member

Откуда:
Сообщений: 148
курсоры декларирует нормально..глюк какой-то
1 авг 11, 07:40    [11051052]     Ответить | Цитировать Сообщить модератору
 Re: Создание процедуры  [new]
DENIS_CHEL
Member

Откуда:
Сообщений: 23097
Коллега, может быть вы перестанете изобретать свой синтаксис tsql, и уже почитаете BOL?
1 авг 11, 07:42    [11051053]     Ответить | Цитировать Сообщить модератору
 Re: Создание процедуры  [new]
kosyakla
Member

Откуда:
Сообщений: 148
Ну так покажите, как правильно...по синтаксису нашел, что вообще якобы нельзя Declare использовать:

USE AdventureWorks2008R2;
GO
SET NOCOUNT ON;
GO
DECLARE @Group nvarchar(50), @Sales money;
SET @Group = N'North America';
SET @Sales = 2000000;
SET NOCOUNT OFF;
SELECT FirstName, LastName, SalesYTD
FROM Sales.vSalesPerson
WHERE TerritoryGroup = @Group and SalesYTD >= @Sales;

мне же нужно сделать цикл по записям и зачем обновить в этом цикле данные
1 авг 11, 08:19    [11051085]     Ответить | Цитировать Сообщить модератору
 Re: Создание процедуры  [new]
DENIS_CHEL
Member

Откуда:
Сообщений: 23097
А что вы вообще хотите сделать? Может опишите задачу?

PS Возможно ее можно будет решить без курсоров...
1 авг 11, 08:23    [11051090]     Ответить | Цитировать Сообщить модератору
 Re: Создание процедуры  [new]
ilyaBS
Member

Откуда: Киев
Сообщений: 77
kosyakla,

Нужно перед именем переменной поставить собачку!
Declare @Test int
1 авг 11, 10:18    [11051450]     Ответить | Цитировать Сообщить модератору
 Re: Создание процедуры  [new]
kosyakla
Member

Откуда:
Сообщений: 148
спасибо большое!
2 авг 11, 03:03    [11056323]     Ответить | Цитировать Сообщить модератору
 Re: Создание процедуры  [new]
kosyakla
Member

Откуда:
Сообщений: 148
Ок...процедура работает...но какой-то глюк...за раз проходит по одной записи только...вот код:

DECLARE @l_last_row_fetched int;
DECLARE @oldRecId int;
DECLARE @callRecId int;
DECLARE c1 CURSOR FOR
select CallRecordErrorId, CallRecordId from DBA.CallRecordsError where ConnectionTypeId = 14;

OPEN c1;
FETCH NEXT FROM c1 into @oldRecId,@callRecId;
WHILE @@FETCH_STATUS = 0
BEGIN
update DBA.CallRecordsError set ConnectionTypeId = 10 where CallRecordId = @callRecId;
FETCH NEXT FROM c1;
END;
CLOSE c1;
DEALLOCATE c1;
2 авг 11, 04:39    [11056363]     Ответить | Цитировать Сообщить модератору
 Re: Создание процедуры  [new]
Glory
Member

Откуда:
Сообщений: 104751
FETCH NEXT FROM c1 into @oldRecId,@callRecId;
и
FETCH NEXT FROM c1;
есть разные команды
2 авг 11, 05:14    [11056368]     Ответить | Цитировать Сообщить модератору
 Re: Создание процедуры  [new]
kosyakla
Member

Откуда:
Сообщений: 148
Понял, СПС!
2 авг 11, 08:19    [11056445]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить