Complementando o post do Eloi sobre o uso de Stored Procedures (SP) Oracle em programas Progress, veremos como utilizar SPs SQL Server com DataServer.
O DataServer oferece um bom suporte para uso de SP, tanto no processamento de resultados quando na manipulação de parâmetros. Quando a lógica de acesso a dados é muito complexa ou quando um programa 4GL / ABL não pode atender os requisitos de performance, o uso de SP pode ser a melhor solução.
Como exemplo, criaremos uma SP simples que recebe dados de pedidos e itens em formato XML, insere os dados nas tabelas correspondentes, e retorna o número do pedido gerado pelo banco de dados. Utilizaremos OpenEdge 10.1C e SQL Server 2008. A estrutura das tabelas é como segue:

A nossa SP deve receber os dados de pedidos e itens no seguinte formato:

A seguir temos o código da SP. Observe que o tipo de dados do parâmetro de entrada foi definido como VARCHAR, pois o DataServer não suporta o tipo de dados XML. A SP faz a conversão para o tipo XML.

Depois de criar a SP no banco de dados, é necessário importar uma referência para o Schema Holder. Este procedimento é realizado na ferramenta Data Administration, através da opção DataServer | MS SQL Server Utilities | Update/Add Table Definitions...:

Verificando pela ferramenta Data Dictionary, a SP aparece como se fosse uma tabela:

Finalmente podemos utilizar um programa 4GL / ABL para executar a SP. O código a seguir executa a SP passando um parâmetro de entrada. Os valores informados para os parâmetros de saída (OUTPUT) não são relevantes no comando RUN STORED-PROCEDURE. Para recuperar os valores dos parâmetros de saída deve-se utilizar a sintaxe NomeProcedure.NomeCampo:

É importante notar que os parâmetros de saída só podem ser acessados após o comando CLOSE STORED-PROCEDURE. Detalhes e exemplos adicionais sobre o uso de SP com Progress podem ser encontrados no manual do DataServer.