Galera Anapropeguas, nossa seriede artigos esta de volta. Esta ja e a nona parte, as anteriores mostraram umpouco de alguns pontos da linguagem SQL, vimos operadores, funcoes deagregacao, criacao de banco, tabelas e views, tambem vimos a alteracao deestruturas de tabelas, tipos de campo, consultas, estruturas condicionais e derepeticao, cursores e tambem conversao de valores. Procurei explanar ate agora,se nao tudo, o que achei mais interessante para aqueles que ainda nao conheciama linguagem SQL. Se por acaso ainda nao viram os outros artigos, disponibilizoos links no final desse artigo.Hoje vamos falar um pouco sobreSTORED PROCEDURES ou Procedimentos Armazenados, sua utilidade e como usa-lo,aproveitem bem e boa leitura.PROCEDIMENTOS ARMAZENADOSPara os que conhecem programacaoPROCEDIMENTOS ARMAZENADOS funcionam semelhantes a procedimentos como emqualquer linguagem. Para aqueles que nao conhecimentos nos permitem:Colocar parametros de entrada e saida;Conter instrucoes que podem executar algumasoperacoes no banco;Retornar um status de execucao;Com uma STORED PROCEDURE podemos,por exemplo, retornar o valor de uma consulta de acordo com os parametrospassados, chamar outros procedimentos, inserir valores em tabelas de acordo comdeterminada situacao, dentro outras funcionalidades.Diretrizes para Procedimentos ArmazenadosAlguns pontos devem ser seguidos,comecemos pela sintaxe de criacao, que segue o mesmo padrao dos anterioresobjetos criados no banco, vejamos com criar uma PROCEDURE, lembre que depois decriada, nao e possivel criar outra com o mesmo nome, portanto caso precisafazer alguma alteracao e so trocar o CREATE pelo ALTER.CREATE { PROC |PROCEDURE } <listade parametros> @PARAM1 TIPO, @PARAM2TIPO [= default ] [ OUT | OUTPUT | [READONLY]ASBEGIN ENDGONomeLembre-se de utilizar um nomefuncional para procedure, por padrao vamos utilizar um prefixo PR seguido denome relativo a funcionalidade da Procedure.ParametrosA lista de parametros seguetambem determinadas regras a serem seguidas.Sempre utilize no comeco doparametro o caractere @ seguido do nome escolhido;Todos os tipos de dadosTransact-SQL podem ser usados como parametros (Desvendandoo SQL - Parte II);Um valor Default por ser usadopara definir o parametro, inclusive valor NULL, isso permite que mesmo que oparametro nao seja passado a execucao da procedure e possivel;OUT ou OUTPUT indica que oparametro e de saida, ou seja, sera devolvido ao final da execucao daprocedure. Lembrando que parametros do tipo text, ntext e image nao podem serusados com OUTPUT;Parametros marcados como READONLYnao podem ser atualizados ou modificados no corpo do procedimento. Se otipo de parametro for um tipo com valor de tabela, devera ser especificadoREADONLY;O BEGIN (Inicio) e END (Fim)limitam o corpo da procedure, como tambem as instrucoes que estiver dentro docorpo podem ser limitadas pelo BEGIN/END;Algumas praticas sao recomendadaspara a PROCEDURE e para nao deixar o artigo muito extenso sugerimos consultar apagina do MSDN.LimitacoesApesar da extensa gama de instrucoesque podem ser utilizadas no corpo da procedure, alguns comandos sao restritos enao podem ser usados. Vejam abaixo: CREATE AGGREGATE CREATE SCHEMA SET SHOWPLAN_TEXT CREATE DEFAULT CREATE ou ALTER TRIGGER SET SHOWPLAN_XML CREATE ou ALTER FUNCTION CREATE ou ALTER VIEW USE database_name CREATE ou ALTER PROCEDURE SET PARSEONLY CREATE RULE SET SHOWPLAN_ALL Uma PROCEDURE pode fazerreferencia a tabelas nao criadas, porque no momento da criacao somente asintaxe e verificada, somente no momento da execucao os objetos referenciadossao resolvidos.SegurancaComo estamos trabalhando com umusuario com permissoes de banco nao veremos