ADO.NET incorretamente retorna 0 de uma função definida pelo usuário do SQL Server
Ler o artigo em inglês: 329497
Quando você chamar uma função do Microsoft SQL Server definido pelo usuário de um aplicativo do Microsoft ADO.NET, a função definida pelo usuário retorna 0 em vez do valor de retorno esperado. Esse comportamento ocorre quando você chamar uma função definida pelo usuário, usando o provedor gerenciado do SQL Server, gerenciados do provedor OLE DB ou o provedor gerenciado do ODBC.
Para contornar esse comportamento, chame a função definida pelo usuário em uma instrução Transact-SQL, Selecione como "Select dbo. [Nome da função] (Parâmetros) "em vez de chamar definido pelo usuário funcionar diretamente.
Etapas para contornar o comportamento
Crie uma nova função definida pelo usuário chamada Function1 no banco de dados Pubs do Microsoft SQL Server. Para fazer isso, execute o seguinte comando Transact-SQL no Microsoft SQL Query Analyzer:
No Microsoft Visual Studio .NET, crie um novo projeto de aplicativo de Console usando o Visual Basic .NET. Por padrão, Module1. vb é criado.
Adicione os seguintes namespaces no início do Module1. vb:
Adicione o seguinte código para o método Sub Main em Module1. vb:
Modificar a sequência de conexão apropriado para seu ambiente.
Iniciar para executar o aplicativo. Observe que a função definida pelo usuário do SQL Server retorna Hello World.
Crie uma função definida pelo usuário no Microsoft SQL Server, conforme descrito na etapa 1 da seção "Solução alternativa".
No .NET do Visual Studio, crie um novo projeto de aplicativo de Console usando o Visual Basic .NET. Por padrão, Module1. vb é criado.
306574 como: chamar SQL Server armazenados procedimentos em ASP.NET usando o Visual Basic .NET
309486 como: executar SQL parametrizada procedimentos armazenados usando o provedor de ODBC do .NET e Visual Basic .NET
308051 PRB: parâmetros de saída não são retornados quando você executa um comando ADO.NET no Visual Basic .NET