locked
dúvidas com cursor RRS feed

  • Pergunta

  • Bom dia a todos,

     

    tenho uma procedure que monta uma query

     

    teria como eu executar essa query montada dentro de um cursor?

     

    Tentei fazer como o exemplo abaixo e não obtive sucesso.

     

    DECLARE RELAT CURSOR FOR

    execute sp_executesql @SQL

    OPEN RELAT
    FETCH NEXT FROM RELAT INTO @VALOR1, @VALOR2, @VALOR3, @VALOR4, @VALOR5

     

    Tem como eu fazer isso?

     

    Obrigado desde já.

     

    quinta-feira, 9 de agosto de 2007 14:51

Respostas

  • Rômulo, eu desconheço como fazer dessa forma como você está precisando. Mas da para contornar usando uma tabela temporária: Fiz um exemplo usando o banco northwind, espero que ajude.
    []´s
    Adriano



    declare @sql nvarchar(1000), @Codigo int, @Nome varchar(70)

    if exists(select * from tempdb..sysobjects where name like '%tabela%')
      drop table #tabela

    Create table #Tabela (Codigo int, Nome varchar(70))

    set @sql = ' select ProductID, ProductName from Products '

    insert into #tabela
    execute sp_executesql @sql

    declare CursorProdutos cursor local static scroll for
    select Codigo, Nome from #tabela
    open CursorProdutos
    fetch first from CursorProdutos into @Codigo, @Nome
    while @@fetch_status = 0
    begin
      print @nome
      fetch next from CursorProdutos into @Codigo, @Nome
    end
    sexta-feira, 10 de agosto de 2007 13:07

Todas as Respostas

  • Rômulo, eu desconheço como fazer dessa forma como você está precisando. Mas da para contornar usando uma tabela temporária: Fiz um exemplo usando o banco northwind, espero que ajude.
    []´s
    Adriano



    declare @sql nvarchar(1000), @Codigo int, @Nome varchar(70)

    if exists(select * from tempdb..sysobjects where name like '%tabela%')
      drop table #tabela

    Create table #Tabela (Codigo int, Nome varchar(70))

    set @sql = ' select ProductID, ProductName from Products '

    insert into #tabela
    execute sp_executesql @sql

    declare CursorProdutos cursor local static scroll for
    select Codigo, Nome from #tabela
    open CursorProdutos
    fetch first from CursorProdutos into @Codigo, @Nome
    while @@fetch_status = 0
    begin
      print @nome
      fetch next from CursorProdutos into @Codigo, @Nome
    end
    sexta-feira, 10 de agosto de 2007 13:07
  • Rômulo,

     

    Deixa eu ver se entendi você deseja criar um cursor e armazenar esta cursor em uma variável e depois executar esta variável através da stored procedure sp_executesql.

     

    É isso?

     

    sexta-feira, 10 de agosto de 2007 13:21
    Moderador
  • Junior,

     

    Na verdade a query será gerada dentro da procedure em uma variável e executada pelo sp_executesql para alimentar um cursor.

    Obrigado pela ajuda mais a resposta do Adriano já serve para resolver o meu problema.

     

    Att.

    segunda-feira, 13 de agosto de 2007 11:21
  • Adriano,

     

    Obrigado pela ajuda. Sua resposta serviu para a resolução do meu problema.

     

    Att.

    segunda-feira, 13 de agosto de 2007 11:22
  • You are welcome.
    segunda-feira, 13 de agosto de 2007 11:43