none
Aspas no parâmetro de uma SP RRS feed

  • Pergunta

  • Tenho uma Stored Procedure que tem dois argumentos do tipo Varchar. No momento de eu passar o parametro desses argumentos, eu preciso passar aspas para ele. Eu não sei como fazer isso. Abaixo minha SP:

    CREATE

     

    PROCEDURE sp_Calc_Produtividade_Dia

    @aNome

    varchar,

    @aData

    varchar

    AS

    BEGIN

     

    select count(*)total from log_index_img

     

    where convert(varchar(10),data,103)= @aData and operador = upper(@aNome)

    END

    GO

     

    Ao chamar a SP, assim, não sei como passar as aspas:

    sp_Calc_Produtividade_Dia 'Teste', '21/02/2011'

    quarta-feira, 9 de março de 2011 16:42

Respostas

  • Boa Tarde,

    Se você precisa passar aspas para a SP, basta duplicá-las colocando duas aspas simples. Ex:

    EXEC sp_Calc_Produtividade_Dia 'Maria D''Alva', '21/02/2011'
    

    Se não existem aspas então já está funcionado.

    Vale a pena lembrar que há algumas recomendações de desempenho para essa SP.

    Nunca crie procedures com o prefixo sp_. Há maiores detalhes sobre essa recomendação no Books OnLine e no meu blog:

    Piores Práticas – Utilizar o prefixo sp_ no nome de uma stored procedure
    http://gustavomaiaaguiar.wordpress.com/2008/12/07/piores-praticas-utilizar-o-prefixo-sp_-no-nome-de-uma-stored-procedure/

    Outra recomendação é que você evite utilizar funções como CONVERT e UPPER na cláusula WHERE. Normalmente essa funções irão ignorar índices e provocam SCANs. Se a sua collation já Case Insensitive, o uso do UPPER perde todo o sentido. O melhor seria o seguinte:

    EXEC sp_Calc_Produtividade_Dia 'Fulano', '20110221'
    WHERE Data >= @aData AND Data < DATEADD(D,1,@aData) AND Nome = @aNome
    

    É um acesso bem mais eficiente tenha certeza

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.wordpress.com


    Classifique as respostas. O seu feedback é imprescindível
    quarta-feira, 9 de março de 2011 16:58

Todas as Respostas