如何使用dapper解析Sql脚本?(将PARSEONLY设置为+Dapper)

本文关键字:PARSEONLY 设置 +Dapper dapper 何使用 解析 Sql 脚本 | 更新日期: 2023-09-27 18:29:58

我想检查&解析sql脚本,所以我搜索了一下,发现了这样的

SET PARSEONLY ON 
SELECT * FROM [dbo].[Categories]  --Query To Parse

我使用dapper,所以我写这样的方法

 public bool IsValidSqlScript(string sqlScript)
    {
        using (SQLConnection)
        {
            using (SQLTransaction)
            {
                var status = SQLConnection.Execute("SET PARSEONLY ON " + sqlScript);
                // OR
                // var status = SQLConnection.Query("SET PARSEONLY ON " + sqlScript);
            }
        }
        return status;
    }

如何获取状态,如果存在任何错误,还可以获取错误列表???

SET PARSEONLY ON
SELECT * FR OM [dbo].[Categories]  --Query To Parse
>>> false
>>> Msg 102, Level 15, State 1, Line 2 Incorrect syntax near 'FR'.

如何使用dapper解析Sql脚本?(将PARSEONLY设置为+Dapper)

您很接近,但您的状态变量有问题。您在SQLTransactionusing语句中声明它,然后尝试在该范围之外返回它。

您将希望使用try/catch块来执行查询,这样您就可以知道sqlScript何时有效。如果你输入了catch块,它是无效的,如果你没有输入,那么它是有效的。

代码应类似于以下内容。。。

public bool IsValidSqlScript(string sqlScript)
{
    bool status;
    try
    {
        using (SQLConnection)
        {
            using (SQLTransaction)
            {
                SQLConnection.Execute("SET PARSEONLY ON " + sqlScript);                    
            }
        }
        status = true;
    }
    catch(Exception e)
    {
        status = false;
    )
    return status;
}