Recomendado: ASP 3.0 Programação avançada (doze) 4.2.3 Exemplos de instruções que contêm o servidor Esta seção fornece algumas páginas de exemplo que podem ser usadas para experimentar várias instruções contendo do lado do servidor. Abra o subdiretório da página de amostra Capítulo 04, exibindo diretivas SSI e o objeto ASP Server & rdqu
9.2.3 Procedimentos armazenadosO uso de procedimentos armazenados é uma área em que os objetos de comando são aplicados. Os procedimentos armazenados (às vezes chamados de consultas de armazenamento) são declarações de consulta SQL que são predefinidas em um banco de dados.
Por que você deve criar e usar procedimentos armazenados em vez de usar strings SQL diretamente em seu código? Existem vários motivos principais:
· Procedimentos armazenados foram compilados pelo banco de dados. Isso resulta em um plano de execução, para que o banco de dados saiba exatamente o que fará, acelerando assim a execução do processo.
Os procedimentos armazenados geralmente são armazenados em cache pelo banco de dados, o que os faz funcionar mais rapidamente porque não precisam ser lidos no disco no momento. Nem todos os bancos de dados suportam esse mecanismo de cache. Por exemplo, o acesso da Microsoft não suporta, mas o SQL Server suporta.
· Ao especificar que as tabelas no banco de dados só podem ser modificadas por procedimentos armazenados, os dados podem ser garantidos para serem mais seguros. Isso significa que as operações SQL potencialmente perigosas não serão realizadas.
· Código ASP pode ser evitado a mistura, juntamente com longas instruções SQL, facilitando a manutenção do código ASP.
· Todo o código SQL pode ser armazenado centralmente no servidor.
· Os parâmetros de saída podem ser usados em procedimentos armazenados para permitir o retorno do conjunto de registros ou outros valores.
De um modo geral, os procedimentos armazenados são quase sempre mais rápidos que as instruções SQL comparáveis.
Para usar procedimentos armazenados, basta usar o nome do procedimento armazenado como texto de comando e definir o tipo correspondente. Por exemplo, considere o exemplo anterior de um preço do livro atualizado. Se você criar um procedimento armazenado no SQL Server, poderá escrever código:
Crie procedimento USP_UPDATEPRICES
COMO
Atualizar títulos
Preço definido = preço * 1.10
Onde tipo = 'negócio'
Para o banco de dados de acesso da Microsoft, a mesma tarefa pode ser realizada usando uma instrução simples de consulta de atualização
Para executar este procedimento armazenado em uma página da Web ASP, basta usar o seguinte código:
Set cmDupdate = server.createObject (adodb.command)
cmdupdate.activeConnection = strconn
cmdupdate.CommandText = USP_UPDATEPRICES
cmdupdate.CommandType = adcmdStoredProc
cmdupdate.execute ,, adexecutenOrecords
Isso está apenas executando um procedimento armazenado. Nenhum conjunto de registros retorna porque os dados estão sendo atualizados. É importante lembrar que você não cria registros, a menos que realmente precise deles.
Embora esteja tudo bem, não é muito flexível, pois está apenas lidando com um tipo de livro. Uma abordagem melhor é criar um processo que nos permita escolher um tipo de livro para que não precisemos criar um processo para cada tipo de livro. Além disso, a atualização fixa de 10% pode ser removida, o que contribui para uma melhor flexibilidade. Então, como posso fazer isso? É muito simples, use parâmetros.
1. Parâmetro
Os parâmetros (ou variáveis) dos procedimentos armazenados são os mesmos dos procedimentos e funções gerais. Eles podem ser transmitidos para a função e a função pode usar seu valor. Os procedimentos armazenados no SQL Server (o mesmo é verdadeiro para outros bancos de dados, incluindo acesso) têm essa função.
Para que os procedimentos armazenados lidem com vários tipos de livros e até permitam que os usuários especifiquem um aumento (ou diminuição) de preços, alguns parâmetros precisam ser adicionados:
Crie procedimento USP_UPDATEPRICES
@Type char (12),
@Percent Money
COMO
Atualizar títulos
Preço definido = preço * (1 @Percent / 100)
Onde tipo = @Type
Agora, o procedimento armazenado USP_UPDATEPRICES leva dois parâmetros:
· Um é o tipo de livro (@Type).
· Um é a porcentagem de mudanças de preço do livro (@Percent).
Como as funções do VBScript, esses parâmetros são variáveis. No entanto, diferentemente do VBScript e de outras linguagens de script, as variáveis nessas linguagens de script são tipos variáveis, enquanto as variáveis SQL têm tipos definidos (char, dinheiro, etc.). A especificação de nomeação das variáveis SQL deve ser seguida, ou seja, a variável deve começar com o símbolo @.
Observe que temos porcentagens transmitidas a esse processo como um número inteiro (como 10 significa 10%) em vez de um valor fracionário. Isso apenas torna os procedimentos armazenados um pouco mais intuitivos.
2. Coleção de parâmetros
Então, agora existe um procedimento armazenado com parâmetros, mas como você o chama através do ADO? Vimos como chamar procedimentos armazenados sem parâmetros com objetos de comando e, de fato, não há diferença entre eles. A diferença é o uso de coleções de parâmetros.
A coleção de parâmetros contém objetos de parâmetro para cada parâmetro no procedimento armazenado. No entanto, o ADO não sabe automaticamente o que são esses parâmetros, portanto devem ser criados usando o método CreateParameter, na seguinte forma:
Set parameter = command.createParameter (nome, [tipo], [direção], [size], [valor])
Os parâmetros e descrições são mostrados na Tabela 9-3:
Tabela 9-3 Parâmetros e descrições do método CreateParameter
parâmetro
ilustrar
Nome
Nome do parâmetro. Este é o nome do parâmetro na coleção Parâmetros, não o nome do parâmetro no procedimento armazenado. No entanto, usar o mesmo nome é uma boa prática
Tipo
O tipo de dados do parâmetro. Pode ser uma constante de addatatype, consulte o apêndice para obter detalhes
Direção
A direção do parâmetro indica se o parâmetro fornece informações para o procedimento armazenado ou o procedimento armazenado retorna informações ao ADO. Pode ser um dos seguintes valores:
adparaminput, o parâmetro é o parâmetro de entrada passada para o procedimento armazenado
adparamOutput, o parâmetro é o parâmetro de saída recuperado do procedimento armazenado
adparaminputOutput, os parâmetros podem ser usados como parâmetros de entrada e saída
adparamreturnValue, este parâmetro contém o status retornado pelo procedimento armazenado
Tamanho
Comprimento do parâmetro. Para tipos de comprimento fixo, como números inteiros, esse valor pode ser ignorado
Valor
Valor do parâmetro
Depois que o parâmetro é criado, ele pode ser anexado à coleção Parâmetros, por exemplo:
Definir parvalue = cmdupdate.createParameter (@Type, Advewchar, Adparaminput, _
12, negócios)
cmdupdate.parameters.Append Parvalue
Set parvalue = cmdupdate.createParameter (@Percent, adcurrency, _
adparaminput, 10)
cmdupdate.parameters.Append Parvalue
Não há necessidade de criar explicitamente um objeto para salvar parâmetros, o tipo de variante padrão já pode funcionar muito bem. Se você não deseja criar uma variável, também pode receber atalhos, como o código a seguir:
cmdupdate.parameters.append = _
cmdupdate.createParameter (@percent, adcurrency, adparaminput, 10)
Isso usa o método CreateParameter para retornar um objeto de parâmetro e o recebe com o método Apênd. Esse método é executado mais rápido do que o uso de variáveis, mas aumenta a linha de código, tornando -o menos legível. Você pode escolher um desses métodos de acordo com seus hobbies.
Depois que os parâmetros forem adicionados à coleção de parâmetros, eles são retidos nela; portanto, cada parâmetro não recebe necessariamente um valor quando o parâmetro é criado. O valor do parâmetro pode ser definido a qualquer momento antes do comando ser executado. Por exemplo:
cmdupdate.parameters.append = _
cmdupdate.createParameter (@Percent, adcurrency, adparaminput)
cmdupdate.parameters (@Percent) = 10
O capítulo anterior mencionou que existem várias maneiras de acessar valores em uma coleção, e a coleção de parâmetros não é diferente. O exemplo acima usa o nome do parâmetro para recuperar parâmetros no conjunto ou também pode ser pesquisado usando números de índice:
cmdupdate.parameters (0) = 10
O código acima atribui o primeiro parâmetro no conjunto de parâmetros (o conjunto de parâmetros numerado de 0)
Compartilhar: Conhecimento relacionado sobre objetos avançados de erro ASP para aplicativo ASP No VBScript, existe uma instrução ONERRORRESUMENEXT que faz com que o intérprete do script ignore os erros de tempo de execução e continue a execução do código do script. Em seguida, o script pode verificar o valor da propriedade Err.Number para determinar se ocorreu um erro. Se ocorrer um erro, um valor diferente de zero será retornado