none
Procedure com número de parametros variaveis RRS feed

  • Pergunta

  • Holá! Mais uma vz preciso do help deste ótimo forum...

    Estou criando uma procedure que precisa receber como parametros as colunas de qualquer tabela do banco. Como cada tabela tem um numero de colunas diferente... preciso criar a procedure dinamicamente...

    pensei em algo tipo:

    declare @parametros varchar(max), @stringColunas varchar(max), @comandos varchar(max), @nomeSP varchar(max)

    set @stringColunas = '@col1' + char(13) + '@col2'
    set @comandos = char(13) + ' AS' +char(13) + ' SELECT '+ @stringColunas + ' FROM Tabela;'

    declare @parametros_comandosSP nvarchar(max)

    set @parametros_comandosSP = @stringColunas + @comandos
    set @nomeSP = 'VAI' + char(13)

    --print 'create procedure ' + @nomeSP + @parametros_comandosSP

    COMANDOCRIAPROCEDURE ( 'create procedure ' + @nomeSP + @parametros_comandosSP);

    Existe algum comando no SQL para isso que eu substitua nesse codigo pelo COMANDOCRIAPROCEDURE?


    sexta-feira, 10 de março de 2017 13:08

Respostas

  • Resolvido!

    Desculpe incomodar com algo bobo assim...

    Além de não saber fazer a pergunta direito, a resposta era tão obvia que ficou ainda mais confuso...

    Tudo que eu precisava era do EXEC. pra usar assim...

    EXEC ('create procedure ' + @nome_sp + @parametros + char(13) + 'AS ' + char(13) + @instrucoes')

    Eu até tinha tenado, mas nunca tina feito anes e deu erro, pensei que não poderia usar o EXEC assim. Mas eu ero poque tinha uma instrução errada (fatou uma virgula) no @instrucoes.

    De toda forma, grato pela atenção.

    sexta-feira, 10 de março de 2017 16:21

Todas as Respostas

  • Ou seja pessoal explicando melhor. Criei uma string de criação da procedure. Mas não sei como executar essa string como um comando que de fato crie a procedure.
    sexta-feira, 10 de março de 2017 13:15
  • Bom dia,

    Não sei se entendi corretamente a sua questão, mas verifique a procedure sp_executesql:

    https://technet.microsoft.com/pt-br/library/ms175170(v=sql.105).aspx

    Espero que ajude 


    Assinatura: http://www.imoveisemexposicao.com.br

    sexta-feira, 10 de março de 2017 13:59
  • Resolvido!

    Desculpe incomodar com algo bobo assim...

    Além de não saber fazer a pergunta direito, a resposta era tão obvia que ficou ainda mais confuso...

    Tudo que eu precisava era do EXEC. pra usar assim...

    EXEC ('create procedure ' + @nome_sp + @parametros + char(13) + 'AS ' + char(13) + @instrucoes')

    Eu até tinha tenado, mas nunca tina feito anes e deu erro, pensei que não poderia usar o EXEC assim. Mas eu ero poque tinha uma instrução errada (fatou uma virgula) no @instrucoes.

    De toda forma, grato pela atenção.

    sexta-feira, 10 de março de 2017 16:21