none
Retorno de um campo TEXT em uma Stored Procedure RRS feed

  • Pergunta

  • Olá a todos!

    Estou tendo um pequeno problema qdo faço uma chamada a uma Stored procedure e entre os campos que são retornados um deles eh do tipo TEXT,  e todos os campos são retornados, menos o TEXT

     

    Alguem tem alguma ideia de como posso resolver esse problema?

     

    Obrigado!!!!

     

    quarta-feira, 12 de julho de 2006 20:01

Todas as Respostas

  • Ola

     

    Estranho isso.. uso SP bastante e nao tenho problema nem nunca tive nada parecido.. posta a sua proc para poder ver se tem algo errado nela.. Pois o erro deve estar nela. ou quando vc esta chamando o campo poder estar colocando o nome dele errado. mas isso iria causar um erro retornando que o campo que vc tentou mostra não faz parte da tabela..

    Mas se der post ai a proc e tb a parte do asp que vc chama o campo... pra ver se achamos onde esta o erro.

    t+

    quinta-feira, 13 de julho de 2006 00:05
  • Olá Robert,

    Vai a proc e o codigo pra dar uma olhada:

    --asp

    sql = "{ call STP_SITE_CORRECAO_DUVIDAS_BUSCA(" & mFor_id & "," & "NULL" & "," & "NULL" & "," & "NULL" & "," & "NULL" & "," & "NULL" & "," & "NULL" & "," & "NULL" & "," & "NULL" & "," & "NULL" & "," & "'DATA/SEQUENCIA')}"

    rsVT2001.Open sql, VT2001, 1, 3

    if rsVT2001.eof then response.write "Não há registros."

    else %>


    Dúvida
    Nome:
    Login:
    Titulo:
    Mensagem:





    Discussões


    Nome:
    Login:
    Mensagem:



    --

    --proc

    SET QUOTED_IDENTIFIER ON
    GO
    SET ANSI_NULLS ON
    GO

    ALTER  PROCEDURE STP_SITE_CORRECAO_DUVIDAS_BUSCA
     @FOR_ID INT
     ,@FOR_SEQUENCIA INT
     ,@FOR_TITULO VARCHAR
     ,@FOR_NIVEL INT
     ,@PROJ_ID INT
     ,@ATIV_ID INT
     ,@AREA_ID INT
     ,@GRU_ID INT
     ,@SO_RESPOSTAS BIT
     ,@SO_PERGUNTAS BIT
     ,@ORDER VARCHAR
    AS
    BEGIN

    DECLARE @T TABLE(FOR_ID INT ,FOR_SEQUENCIA INT ,FOR_DATA DATETIME ,TITULO VARCHAR(100),MENSAGEM text, USU_ID INT, ADM_ID INT, USU_NOME VARCHAR(100), USU_EMAIL VARCHAR(500))

    INSERT INTO @T
    SELECT
     FOR_ID,
     FOR_SEQUENCIA,
     FOR_DATA,
     FOR_TITULO,
     FOR_MENSAGEM,
     ISNULL(FORUM.USU_ID,-1),
     ISNULL(FORUM.ADM_ID,-1),
     USU_NOME AS USU_NOME,
     USU_EMAIL AS USU_EMAIL
    FROM
     FORUM WITH (NOLOCK),
     USUARIO WITH (NOLOCK)
     
    WHERE 1=1
     AND FORUM.USU_ID = USUARIO.USU_ID
     AND ((@FOR_TITULO IS NULL)OR(FOR_TITULO LIKE '%''' + @FOR_TITULO + '%'''))
     AND ((@SO_RESPOSTAS IS NULL) OR (FORUM.FOR_SEQUENCIA <> 1))
     AND ((@SO_PERGUNTAS IS NULL) OR (FORUM.FOR_SEQUENCIA = 1))
     AND ((@FOR_ID IS NULL) OR (FORUM.FOR_ID = @FOR_ID))
     AND ((@FOR_SEQUENCIA IS NULL) OR (FORUM.FOR_SEQUENCIA = @FOR_SEQUENCIA))
     AND ((@FOR_NIVEL IS NULL) OR (FORUM.FOR_NIVEL = @FOR_NIVEL))
     AND ((@PROJ_ID IS NULL) OR (FORUM.PROJ_ID = @PROJ_ID))
     AND ((@ATIV_ID IS NULL) OR (FORUM.ATIV_ID = @ATIV_ID))
     AND ((@AREA_ID IS NULL) OR (FORUM.AREA_ID = @AREA_ID))
     AND ((@GRU_ID IS NULL) OR (FORUM.GRU_ID = @GRU_ID))
     
    INSERT INTO @T
    SELECT
     FOR_ID,
     FOR_SEQUENCIA,
     FOR_DATA,
     FOR_TITULO,
     FOR_MENSAGEM,
     ISNULL(FORUM.USU_ID,-1),
     ISNULL(FORUM.ADM_ID,-1),
     ADM_NOME AS USU_NOME,
     ADM_EMAIL AS USU_EMAIL
    FROM
     FORUM WITH (NOLOCK),
     ADMINISTRADOR WITH (NOLOCK)
     
    WHERE 1=1
     AND FORUM.ADM_ID = ADMINISTRADOR.ADM_ID
     AND ((@FOR_TITULO IS NULL)OR(FOR_TITULO LIKE '%''' + @FOR_TITULO + '%'''))
     AND ((@SO_RESPOSTAS IS NULL) OR (FORUM.FOR_SEQUENCIA <> 1))
     AND ((@SO_PERGUNTAS IS NULL) OR (FORUM.FOR_SEQUENCIA = 1))
     AND ((@FOR_ID IS NULL) OR (FORUM.FOR_ID = @FOR_ID))
     AND ((@FOR_SEQUENCIA IS NULL) OR (FORUM.FOR_SEQUENCIA = @FOR_SEQUENCIA))
     AND ((@FOR_NIVEL IS NULL) OR (FORUM.FOR_NIVEL = @FOR_NIVEL))
     AND ((@PROJ_ID IS NULL) OR (FORUM.PROJ_ID = @PROJ_ID))
     AND ((@ATIV_ID IS NULL) OR (FORUM.ATIV_ID = @ATIV_ID))
     AND ((@AREA_ID IS NULL) OR (FORUM.AREA_ID = @AREA_ID))
     AND ((@GRU_ID IS NULL) OR (FORUM.GRU_ID = @GRU_ID))


    IF @ORDER = 'DATA/ID/SEQUENCIA'
    BEGIN
    SELECT
     FOR_ID AS FOR_ID,
     FOR_SEQUENCIA AS FOR_SEQUENCIA,
     FOR_DATA AS FOR_DATA,
     TITULO AS TITULO,
     MENSAGEM AS MENSAGEM,
     USU_ID AS USU_ID,
     ADM_ID AS ADM_ID,
     USU_NOME AS USU_NOME,
     USU_EMAIL AS USU_EMAIL
    FROM
     @T
    ORDER BY
     FOR_DATA,FOR_ID,FOR_SEQUENCIA DESC
    END

    ELSE IF @ORDER = 'DATA/SEQUENCIA'
    BEGIN
    SELECT
     FOR_ID AS FOR_ID,
     FOR_SEQUENCIA AS FOR_SEQUENCIA,
     FOR_DATA AS FOR_DATA,
     TITULO AS TITULO,
     MENSAGEM AS MENSAGEM,
     USU_ID AS USU_ID,
     ADM_ID AS ADM_ID,
     USU_NOME AS USU_NOME,
     USU_EMAIL AS USU_EMAIL 
    FROM
     @T
    ORDER BY
     FOR_DATA,FOR_SEQUENCIA ASC
    END
    ELSE
    BEGIN
    SELECT
     FOR_ID AS FOR_ID,
     FOR_SEQUENCIA AS FOR_SEQUENCIA,
     FOR_DATA AS FOR_DATA,
     TITULO AS TITULO,
     MENSAGEM AS MENSAGEM,
     USU_ID AS USU_ID,
     ADM_ID AS ADM_ID,
     USU_NOME AS USU_NOME,
     USU_EMAIL AS USU_EMAIL
    FROM
     @T
    ORDER BY
     FOR_SEQUENCIA ASC
    END


    END

    GO
    SET QUOTED_IDENTIFIER OFF
    GO
    SET ANSI_NULLS ON
    GO

    --

    Muito Obrigado!

    quinta-feira, 13 de julho de 2006 12:08
  • Ulliana,

    O campo TEXT não retorna (ele diz que a coluna não existe), ou retorna nulo ?

    Ví que vc popula uma tabela temporária para retorna uma consulta, e que vc executa consulta em 2 tabelas para popular sua temporária. Já pensou em usa um UNION no lugar de fazer 2 selects? Não dominio desempenho de banco, mas creio que seria mais eficiente.

    Experimente!

    quarta-feira, 19 de julho de 2006 11:31
  • Olá Thiago.....

    O Campo retornado é nulo...

    Fica inviavel fazer uma union já q que na tabela existe o campo do tipo TEXT, o sql não possibilita fazer unions com campos text....o erro retornado é "não é possivel fazer distinct em no campo text"

     

    mas se vc conhece alguma outra forma, eu fico feliz em aprender ;)

     

     

    quarta-feira, 19 de julho de 2006 11:40