0

こんにちは私はまだTSQLの初心者です。スカラー変数を出力して、vbコードがそれにアクセスできるようにするにはどうすればよいですか?

VBではrsメソッドを使用します。この場合、以下のデータにアクセスできるようにするには、3つのrsを作成する必要があります。複数のrsを使用せずに必要な4つの値を取得できるストアドプロシージャが必要です。

Create PROCEDURE [dbo].[sp_tblTransaction_GET_All_Totals]

@TransID bigint

AS

Declare @MyTotalCharges as money 
Declare @MyTotalDiscounts as money 
Declare @MyTotalPayments as money 

Declare @TotalCharges as money
Declare @TotalDiscounts as money
Declare @TotalPayments as money
Declare @Balance as money

SELECT     @MyTotalCharges = SUM(Amount) 
FROM         tblTransactionDetails
WHERE     (TransID = @TransID)


SELECT     @MyTotalDiscounts = SUM(Amount) 
FROM         tblTransaction_DP
WHERE     (TransID = @TransID)

SELECT     @MyTotalPayments = SUM(Amount)
FROM         tblPayments
WHERE     (TransID = @TransID)

--Below are the scalar values I need to be ouputed and accessed by my vb app.
--How can I output the values below?

@TotalCharges = @MyTotalCharges
@TotalDiscounts = @MyTotalDiscounts
@TotalPayments = @MyTotalPayments
@Balance = (@MyTotalCharges - @MyTotalDiscounts - @MyTotalPayments)
4

2 に答える 2

1

やってみました?

SELECT @Balance AS 'Balance', @TotalCharges AS 'TotalCharges' ... 
于 2013-02-17T16:21:58.750 に答える
1

ストアドプロシージャからの値をテーブルとして返す必要があります。これをプロシージャに追加します。

SELECT
    @TotalCharges as [Total Charges],
    @TotalDiscounts as [Total Discounts],
    @TotalPayments as [TotalPayments],
    @Balance as [Balance]

次に、VBアプリからストアドプロシージャを実行し、テーブルをDataTableにロードできます。

int transactionID = 0;
DataTable table = new DataTable();

using (var connection = new SqlConnection("connectionString")
using (var command = new SqlCommand("sp_tblTransaction_GET_All_Totals", connection)
{
    connection.Open();
    command.CommandType = CommandType.StoredProcedure;
    command.Parameters.AddWithValue("@TransID", transactionID);

    using (var adapter = new SqlDataAdapter(command))
    {
        adapter.Fill(table);
    }   
}

SqlDataAdapterを使用してC#からストアドプロシージャを呼び出す

これがSqlDataAdapterに関するドキュメントで、C#とVBの両方の例が含まれています。

MSDN-SqlDataAdapterクラス(System.Data.SqlClient)

于 2013-02-17T16:29:17.310 に答える