SQL Server输出参数返回混合结果

格德克

**编辑*****************我从GETDATE()更改为SYSDATETIME()。我也将测量值从毫秒更改为微秒。处理过程进行得如此之快,以至于毫秒级都无法测量。


我使用此代码的目的是计算传递到存储过程中的查询字符串的处理时间。查询字符串由用户创建,该用户是一名参加sql /数据库课程的学生。在后续查询中,将字符串与键进行比较,以确定它是否为分配产生正确的结果。就像您看到的那样,是VB.NET代码(.NET 4.5项目)调用了C#方法(.NET 3.5项目),该方法调用了存储过程(SQL SERVER 2012)。

我在主程序项目中的初始调用是在这里:

Dim executionTime As Integer = exercise.GetSqlTime(txtUserSQL, connectionString)

调用的方法在这里:

public int GetSqlTime(string SqlString, string ConnectionString)//bookmark
    {
        int executionTime = 0;

        SqlConnection con = new SqlConnection(ConnectionString);
        using (SqlCommand cmd = new SqlCommand("QueryExecutionTime", con))
        {
            cmd.CommandType = CommandType.StoredProcedure;

            cmd.Parameters.Add("@UserSQLstring", SqlDbType.NVarChar).Value = SqlString;
            cmd.Parameters.Add("@Duration", SqlDbType.Int);
            cmd.Parameters["@Duration"].Direction = ParameterDirection.Output;

            con.Open();
            cmd.ExecuteNonQuery();
            con.Close();
            executionTime = Convert.ToInt32(cmd.Parameters["@Duration"].Value); 
        }
        return executionTime;
    }

我的存储过程在这里:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[QueryExecutionTime] 
@UserSQLstring NvarChar(3000),
@Duration int OUTPUT
AS
BEGIN
SET NOCOUNT ON;

DECLARE @StartTime datetime = GETDATE() 
EXEC sp_executesql @UserSQLstring
DECLARE @EndTime datetime = GETDATE()   

SET @Duration = DATEDIFF(MILLISECOND,@StartTime,@EndTime)
END

当查询字符串正确时,结果为0。当字符串不正确时,它将返回一个介于1.4到2.5秒之间的值

这是我第一次使用带有输出参数的存储过程。我不知道这会变得如此具有挑战性。

我是否忽略了一个可以使此工作正常进行的简单细节?我已经在单独的Stack Overflow上尝试了至少五个或六个示例,以及其他几个网站。您在这里看到的是我的最新版本。如果您需要其他信息,请告诉我。

如果您知道这样做的更好方法,欢迎您提出任何建议。

约翰·S

您的结果可能正确。如果您的SQL SERVER版本是2008或更高版本,请使用SYSDATETIME()而不是GETDATE(),因为它具有更高的准确性(或分辨率)。否则,您可以尝试多次运行查询字符串,然后将结果除以运行次数。格式错误的查询字符串的执行时间应该被丢弃。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

执行输出参数sql server

来自分类Dev

如何在ado.net中使用输出参数并选择SQL Server存储过程的查询结果?

来自分类Dev

如何在ado.net中使用输出参数并选择SQL Server存储过程的查询结果?

来自分类Dev

具有SQL Server输出bigint参数的Dapper返回int32

来自分类Dev

SQL Server:输出参数到表

来自分类Dev

SQL Server使用参数会使结果变慢

来自分类Dev

SQL Server使用参数会使结果变慢

来自分类Dev

存储过程(输入与输出)与返回 - SQL Server

来自分类Dev

SQL Server FREETEXTTABLE不返回结果

来自分类Dev

SQL Server getdate()返回奇怪的结果?

来自分类Dev

SQL Server参数化的SELECT过程不返回任何结果,但在显式设置时返回记录

来自分类Dev

SAS 连接 SQL Server 并返回参数

来自分类Dev

SQL(MS SQL Server)返回列值作为乘法结果

来自分类Dev

sql无序输出(结果)

来自分类Dev

具有date参数的PL / SQL函数返回错误的输出

来自分类Dev

参数化动态SQL不返回任何结果

来自分类Dev

参数化的动态SQL不返回任何结果

来自分类Dev

参数化的SQL查询不返回任何结果,字符串格式的查询返回正确的结果

来自分类Dev

SQL返回错误的结果

来自分类Dev

SQL返回重复的结果

来自分类Dev

SQL 返回错误结果

来自分类Dev

sql server存储过程插入值作为输出参数

来自分类Dev

PHP Sql Server输出参数给出错误

来自分类Dev

PHP Sql Server输出参数给出错误

来自分类Dev

查询中的日期未在SQL Server中返回正确的输出

来自分类Dev

SQL Server合并-输出返回插入时已删除的空行

来自分类Dev

SQL Server查找返回结果集的存储过程

来自分类Dev

TSQL将比SQL Server中的存储过程返回更快的结果

来自分类Dev

查询未返回正确的结果-SQL Server Xquery

Related 相关文章

  1. 1

    执行输出参数sql server

  2. 2

    如何在ado.net中使用输出参数并选择SQL Server存储过程的查询结果?

  3. 3

    如何在ado.net中使用输出参数并选择SQL Server存储过程的查询结果?

  4. 4

    具有SQL Server输出bigint参数的Dapper返回int32

  5. 5

    SQL Server:输出参数到表

  6. 6

    SQL Server使用参数会使结果变慢

  7. 7

    SQL Server使用参数会使结果变慢

  8. 8

    存储过程(输入与输出)与返回 - SQL Server

  9. 9

    SQL Server FREETEXTTABLE不返回结果

  10. 10

    SQL Server getdate()返回奇怪的结果?

  11. 11

    SQL Server参数化的SELECT过程不返回任何结果,但在显式设置时返回记录

  12. 12

    SAS 连接 SQL Server 并返回参数

  13. 13

    SQL(MS SQL Server)返回列值作为乘法结果

  14. 14

    sql无序输出(结果)

  15. 15

    具有date参数的PL / SQL函数返回错误的输出

  16. 16

    参数化动态SQL不返回任何结果

  17. 17

    参数化的动态SQL不返回任何结果

  18. 18

    参数化的SQL查询不返回任何结果,字符串格式的查询返回正确的结果

  19. 19

    SQL返回错误的结果

  20. 20

    SQL返回重复的结果

  21. 21

    SQL 返回错误结果

  22. 22

    sql server存储过程插入值作为输出参数

  23. 23

    PHP Sql Server输出参数给出错误

  24. 24

    PHP Sql Server输出参数给出错误

  25. 25

    查询中的日期未在SQL Server中返回正确的输出

  26. 26

    SQL Server合并-输出返回插入时已删除的空行

  27. 27

    SQL Server查找返回结果集的存储过程

  28. 28

    TSQL将比SQL Server中的存储过程返回更快的结果

  29. 29

    查询未返回正确的结果-SQL Server Xquery

热门标签

归档