Array
(
)

Dúvidas sobre Procedures

Wendell.spolaor
   - 13 fev 2008

Olá galera trabalho com firebird a alguns anos e agora estou estudando SQL Server por necessidade. A princípio o que está pegando são as stored procedures, tanto que achei mais difícil de tratar as sintaxes do que no firebird.

Por exemplo:

Se eu tivesse uma tabela NUMERO com os seguintes campos id (int) e valor (numeric). eu criaria uma procedure que me retornasse as mesmas informações da tabela, porém tendo o campo valor multiplicado por 2... o corpo da procedure (procedure_multiplica) no firebird, eu faria um
for select id, valor from NUMERO INTO :parametro_output_id, :parametro_output_valor do
begin
parametro_output_valor = :parametro_output_valor * 2;
suspend;
end

na pequena rotina eu faria um select para cada registro dentro de um FOR, que já irá me preencher os 2 parametros output, ainda dentro do FOR, eu iria fazer a multiplicação e executaria o suspend, que iria gravar aquela execução, como se fosse um row novo para cada registro do FOR SELECT. Logo, se eu fizer select * from procedure_multiplica;
ele iria me trazer os 2 outputs com o id e o campo valor multiplicado por 2....
Pelo que eu entendi no sql server, brevemente falando eu teria que declarar uma tabela virtual, criar um cursor que iria varrer um select (como o FOR no firebird), dar um insert de cada registro do cursor na tabela virtual e finalmente retornar com um select na tabela virtual? complicado ao meu ver não?

Outro detalhe, chaves primárias:

Um exemplo bem simples, eu tenho uma tabela de USUARIO que tem id_usuario (int) e nome (varchar), outra tabela chamada META que tem id_meta (int), descricao (varchar) e meta(numeric).

Posteriormente eu criaria uma tabela chamado USUARIO_META, criando os campos id_usuario e id_meta, apenas que seria a associação das duas tabelas para eventuais operações. No firebird, caso eu nao quisesse que essas informações fossem unicas, eu criaria 2 chaves primarias, e no sql server?!?

Gostaria de ajuda a respeito disso pois é de grande interesse aprender hehehe
Abraço Galera!