我有以下代码被执行,我想从c#中获取@synchronization_version的值。有没有人知道如何处理?如何从C#代码中获取TSQL中的变量值?
DECLARE @synchronization_version BIGINT
SET @synchronization_version = CHANGE_TRACKING_CURRENT_VERSION();
我有以下代码被执行,我想从c#中获取@synchronization_version的值。有没有人知道如何处理?如何从C#代码中获取TSQL中的变量值?
DECLARE @synchronization_version BIGINT
SET @synchronization_version = CHANGE_TRACKING_CURRENT_VERSION();
最直接的方法是使用SqlCommand.ExecuteScalar。看到这篇文章:https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executescalar(v=vs.110).aspx。
你的SQL查询应该是这样的:
SELECT Convert(BigInt,CHANGE_TRACKING_CURRENT_VERSION());
我修改了MSDN代码如下。这应该工作:
public static Int64 GetSynchronizationVersion(string connString)
{
Int64 synchronizationVersion = 0;
string sql =
"SELECT Convert(BigInt,CHANGE_TRACKING_CURRENT_VERSION());";
using (SqlConnection conn = new SqlConnection(connString))
{
SqlCommand cmd = new SqlCommand(sql, conn);
//This query has no parameters.
try
{
conn.Open();
synchronizationVersion = (Int64)cmd.ExecuteScalar();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
return synchronizationVersion;
}
这种操作称为的ExecuteScalar因为它返回一个值(标量),而不是一组行。
非常感谢!这可以工作! – Lubor
非常欢迎。 –
把它包在从C#
SqlParameter outData = new SqlParameter("@synchronization_version", SqlDbType.BIGINT){ Direction = ParameterDirection.Output };
cmd.ExecuteScalar();
像
create procedure Sp_getdata
as
begin
DECLARE @synchronization_version BIGINT OUTPUT
SET @synchronization_version = CHANGE_TRACKING_CURRENT_VERSION();
SELECT @synchronization_version;
end
调用过程的过程然后,只需读取输出参数
long result = outData.Value;
使用标量函数的值? – Ghost
感谢您的评论! – Lubor