Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何在sql server中选择输出标量值?_Sql Server_Tsql_Scalar - Fatal编程技术网

Sql server 如何在sql server中选择输出标量值?

Sql server 如何在sql server中选择输出标量值?,sql-server,tsql,scalar,Sql Server,Tsql,Scalar,嗨,我还是TSQL的新手。如何输出标量变量,以便我的vb代码可以访问它 在VB中我使用rs方法。在这种情况下,我必须创建3个rs才能访问以下数据。我想有一个存储过程,可以给我4个值,我需要不使用多个rs Create PROCEDURE [dbo].[sp_tblTransaction_GET_All_Totals] @TransID bigint AS Declare @MyTotalCharges as money Declare @MyTotalDiscounts as money

嗨,我还是TSQL的新手。如何输出标量变量,以便我的vb代码可以访问它

在VB中我使用rs方法。在这种情况下,我必须创建3个rs才能访问以下数据。我想有一个存储过程,可以给我4个值,我需要不使用多个rs

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)
你试过了吗

SELECT @Balance AS 'Balance', @TotalCharges AS 'TotalCharges' ... 

您需要将存储过程中的值作为表返回。将此添加到您的过程中

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#和VB中的示例


Nice的可能副本!非常感谢@J Lo。这就是我需要的。完美的