Karuta’s ASP & M$ SQLserver

Dicas, códigos e outras coisinhas de meus estudos para não esquecer…

Archive for janeiro \26\UTC 2010

simular a passagem de um vetor ou array como parâmetro para uma stored procedure

Posted by karuta em janeiro 26, 2010

CREATE PROCEDURE SIMULA_ARRAY_COMPLETA

        @SCOCPFCNPJ                             VARCHAR(8000),
        @SCOCLASSIFICACAO               VARCHAR(8000),
        @SDEJUSTIFICATIVA               VARCHAR(8000)

   /* .... OUTROS PARÂMETROS SE EXISTIREM .... */

AS DECLARE      @CPFCNPJ                        VARCHAR(14),
                @CLASSIFICACAO          CHAR(1),
                @JUSTIFICATIVA          VARCHAR(255),
                @DELIMITADOR            VARCHAR(2)        

        --Define que vai ser o delimitador
        SET             @DELIMITADOR = '@|'

        --Inicia a transação
        BEGIN TRAN      

        --CONCATENA O @DELIMITADOR NO FINAL DE DAS VARIÁVEIS LOCAIS
        IF LEN(@SCOCPFCNPJ) > 0                 SET @SCOCPFCNPJ                 = @SCOCPFCNPJ + @DELIMITADOR  
        IF LEN(@SCOCLASSIFICACAO) > 0   SET @SCOCLASSIFICACAO   = @SCOCLASSIFICACAO + @DELIMITADOR  
        IF LEN(@SDEJUSTIFICATIVA) > 0   SET @SDEJUSTIFICATIVA   = @SDEJUSTIFICATIVA + @DELIMITADOR  

        --INICIA LOOP PARA EXTRAIR SCOCPFCNPJ PARA EFETUAR A ATUALZIAÇÃO
        WHILE LEN(RTRIM(LTRIM(@SCOCPFCNPJ))) > 0
        BEGIN --LOCALIZA E EXTRAI O CNPJ/CPF, @CLASSIFICACAO E JUSTIFICATIVA
                        --PARA VARIAVEIS LOCAIS
                        SELECT @CPFCNPJ                 = SUBSTRING(@SCOCPFCNPJ, 1, CHARINDEX(@DELIMITADOR, @SCOCPFCNPJ) - 1)
                        SELECT @CLASSIFICACAO   = SUBSTRING(@SCOCLASSIFICACAO, 1, CHARINDEX(@DELIMITADOR, @SCOCLASSIFICACAO) - 1)
                        SELECT @JUSTIFICATIVA   = SUBSTRING(@SDEJUSTIFICATIVA , 1, CHARINDEX(@DELIMITADOR, @SDEJUSTIFICATIVA ) - 1)      

                        INSERT INTO NOME DA TABELA (
                                        CO_CPF_CNPJ, CO_CLASSIFICACAO, DE_JUSTIFICATIVA)
                        VALUES( @CPFCNPJ, @CLASSIFICACAO, @JUSTIFICATIVA)

                        --RETIRA LOCALIZA E EXTRAI O CNPJ/CPF, SITUAÇÃO E JUSTIFICATIVA
                        SELECT @SCOCPFCNPJ= SUBSTRING(@SCOCPFCNPJ, CHARINDEX(@DELIMITADOR, @SCOCPFCNPJ) + 2, LEN(@SCOCPFCNPJ))

                        SELECT @SCOCLASSIFICACAO=
                                                SUBSTRING(@SCOCLASSIFICACAO, CHARINDEX(@DELIMITADOR, @SCOCLASSIFICACAO) + 2, LEN(@SCOCLASSIFICACAO))

                        SELECT @SDEJUSTIFICATIVA =
                                                SUBSTRING(@SDEJUSTIFICATIVA , CHARINDEX(@DELIMITADOR, @SDEJUSTIFICATIVA ) + 2, LEN(@SDEJUSTIFICATIVA ))

        END

        --VERIFICA OCORRÊNCIA DE ERROS DURANTE O PROCESSO PARA CONFIRMAR OU NÃO A TRANSAÇÃO
        IF @@ERROR = 0
        BEGIN COMMIT TRAN
        END
        ELSE
        BEGIN ROLLBACK TRAN
        END

 Continue lendo »
Anúncios

Posted in store procedure | Leave a Comment »