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

Откуда: Münster, Germany
Сообщений: 1738
Создал хранимую процедуру (см.ниже)
Если из неё убрать Fetch то все работает и select в конце возвращает данные
с fetch не работает последний select (хотя и ошибку не выдаёт)
курсор получается пустойю Почему?



USE [test_mik]
GO
/****** Object:  StoredProcedure [dbo].[MIKTESTPROC]    Script Date: 05/10/2011 15:03:35 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- Batch submitted through debugger: SQLQuery10.sql|7|0|C:\Users\tchervonenko\AppData\Local\Temp\~vs41EB.sql
-- Batch submitted through debugger: SQLQuery5.sql|7|0|C:\Users\tchervonenko\AppData\Local\Temp\~vs4337.sql
-- Batch submitted through debugger: SQLQuery1.sql|15|0|C:\Users\tchervonenko\AppData\Local\Temp\~vs8D65.sql
-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[MIKTESTPROC]
@UrlTitel VARCHAR(MAX) = ''
AS
BEGIN
	SET NOCOUNT ON
	DECLARE @nNambe Int;
	set @nNambe = 1;
	DECLARE myCursor CURSOR FOR Select * FROM dbo.mitglied;
	open myCursor;
	FETCH NEXT FROM myCursor;

	
	close myCursor;
	deallocate myCursor;	
	select *,@nNambe AS [nNambeStr] from dbo.st_urls WHERE UPPER(RTRIM(titel)) LIKE  @UrlTitel
END
10 май 11, 17:27    [10630932]     Ответить | Цитировать Сообщить модератору
 Re: FETCH и последующий SELECT  [new]
Eduard Minasyan
Member

Откуда:
Сообщений: 119
надо так

FETCH NEXT FROM myCursor INTO @var1, @var2
смотря сколько колонок у таблицы
10 май 11, 17:47    [10631086]     Ответить | Цитировать Сообщить модератору
 Re: FETCH и последующий SELECT  [new]
iljy
Member

Откуда:
Сообщений: 8711
Mikhail Tchervonenko,

потому что получается несколько рекордсетов. Причем каждый FETCH - это отдельный рекордсет.
10 май 11, 17:52    [10631111]     Ответить | Цитировать Сообщить модератору
 Re: FETCH и последующий SELECT  [new]
iljy
Member

Откуда:
Сообщений: 8711
Mikhail Tchervonenko,

запустите в SSMS
if object_id('#ttt') is not null drop proc #ttt
go
create proc #ttt
AS
BEGIN
	SET NOCOUNT ON
	DECLARE myCursor CURSOR FOR Select * FROM (select 0 union all select 1 union all select 2)t(x)
	open myCursor;
	FETCH NEXT FROM myCursor;
	FETCH NEXT FROM myCursor;

	
	close myCursor;
	deallocate myCursor;	
	select * from (select 0,0 union all select 1,1 union all select 2,2)t(x,y)
END
go

exec #ttt
drop proc #ttt
10 май 11, 17:55    [10631126]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить