none
Inserir Pré-Requisitos numa só coluna RRS feed

  • Pergunta

  • Olá pessoal,

    Estou precisando incluir em uma coluna todos os pré-requisitos de uma disciplina. Para isso, estou tentando fazer a consulta abaixo mas está retornando um erro. Alguém poderia me dar uma ajudinha?

    DECLARE @SQLStr VARCHAR(5000)
    SET @SQLStr = ''
    
    
    SELECT A.CODGRADE, A.CODCURSO, B.CODPERIODO, SEMESTRE = B.DESCRICAO,
    C.CODDISC,
    (
        SELECT @SQLStr + REQUISITOS + ', '
            FROM (SELECT  X.CODDISC AS REQUISITOS
                    FROM SREQUISITO AS X (NOLOCK)
                    WHERE X.CODCOLIGADA = C.CODCOLIGADA
                    AND X.CODCURSO = C.CODCURSO
                    AND X.CODHABILITACAO = C.CODHABILITACAO
                    AND X.CODGRADE = C.CODGRADE
                    AND X.CODPERIODO = C.CODPERIODO
                    AND X.CODDISCREQ = C.CODDISC)
        SET @SQLStr = LEFT(@SQLStr,len(@SQLStr))
        SELECT @SQLStr
    )
    FROM SGRADE A (NOLOCK)
    INNER JOIN SPERIODO AS B (NOLOCK) ON (B.CODCOLIGADA = A.CODCOLIGADA
                    AND B.CODCURSO = A.CODCURSO
                    AND B.CODHABILITACAO = A.CODHABILITACAO
                    AND B.CODGRADE = A.CODGRADE)
    INNER JOIN SDISCGRADE AS C (NOLOCK) ON (C.CODCOLIGADA = B.CODCOLIGADA
                    AND C.CODCURSO = B.CODCURSO
                    AND C.CODHABILITACAO = B.CODHABILITACAO
                    AND C.CODGRADE = B.CODGRADE
                    AND C.CODPERIODO = B.CODPERIODO)
    
    WHERE A.CODGRADE = 'TEO'

    Mensagem de erro:

    Msg 156, Level 15, State 1, Line 17
    Incorrect syntax near the keyword 'SET'.
    Msg 102, Level 15, State 1, Line 19
    Incorrect syntax near ')'.


    Como poso resolver esse problema?

    Grato,

    Ilano.




    • Editado ilanocf quinta-feira, 1 de março de 2018 20:09
    quinta-feira, 1 de março de 2018 18:50

Respostas

Todas as Respostas

  • Galera,

    Pensei em outro jeito, mas ainda preciso da ajuda de vocês. Criei a seguinte procedure:

    CREATE PROCEDURE SP_PRERREQUISITOS
    (
    	@CODCOLIGADA AS INT,
    	@CODCURSO AS VARCHAR(25),
    	@CODHABILITACAO AS VARCHAR(25),
    	@CODGRADE AS VARCHAR(25),
    	@CODPERIODO AS INT,
    	@CODDISC AS VARCHAR(25)
    )
    AS BEGIN
    
    	DECLARE @SQLStr VARCHAR(5000)
    	SET @SQLStr = ''
    
        SELECT @SQLStr + REQUISITOS + ', '
            FROM (SELECT  X.CODDISC AS REQUISITOS
                    FROM SREQUISITO AS X (NOLOCK)
                    WHERE X.CODCOLIGADA = @CODCOLIGADA
                    AND X.CODCURSO = @CODCURSO
                    AND X.CODHABILITACAO = @CODHABILITACAO
                    AND X.CODGRADE = @CODGRADE
                    AND X.CODPERIODO = @CODPERIODO
                    AND X.CODDISCREQ = @CODDISC
                    ) AS ABC
        SET @SQLStr = LEFT(@SQLStr,len(@SQLStr))
        SELECT @SQLStr
    end;

    Como faço para incluir essa procedure dentro do SQL abaixo:

    SELECT A.CODGRADE, A.CODCURSO, B.CODPERIODO, SEMESTRE = B.DESCRICAO, C.CODDISC, [PROCEDURE_AQUI] FROM SGRADE A (NOLOCK) INNER JOIN SPERIODO AS B (NOLOCK) ON (B.CODCOLIGADA = A.CODCOLIGADA AND B.CODCURSO = A.CODCURSO AND B.CODHABILITACAO = A.CODHABILITACAO AND B.CODGRADE = A.CODGRADE) INNER JOIN SDISCGRADE AS C (NOLOCK) ON (C.CODCOLIGADA = B.CODCOLIGADA AND C.CODCURSO = B.CODCURSO AND C.CODHABILITACAO = B.CODHABILITACAO AND C.CODGRADE = B.CODGRADE AND C.CODPERIODO = B.CODPERIODO)

    WHERE A.CODGRADE = 'TEO'



    • Editado ilanocf quinta-feira, 1 de março de 2018 22:36
    quinta-feira, 1 de março de 2018 21:57
  • Deleted
    • Marcado como Resposta ilanocf sexta-feira, 2 de março de 2018 13:40
    sexta-feira, 2 de março de 2018 11:55
  • Olá José Diniz,

    Funcionou perfeitamente.

    Muito obrigado.

    sexta-feira, 2 de março de 2018 13:40