美文网首页
SQL Server '@P0'附近有语法错误

SQL Server '@P0'附近有语法错误

作者: lanweihong | 来源:发表于2017-12-13 18:17 被阅读0次

    最近在用Nutz开发项目,在一次执行自定义分页的SQL时出现错误,截取部分报错信息如下:

    ### com.microsoft.sqlserver.jdbc.SQLServerException: '@P0' 附近有语法错误。
    ...
    ...
    ...
    org.nutz.dao.DaoException: !Nutz SQL Error: 'SELECT TOP 10 * FROM Inventory'
    PreparedStatement: 
    'SELECT TOP ? * FROM Inventory'
    CaseMessage='@P0' 附近有语法错误。
    
    ...
    

    执行的SQL如下:

    Sql sql = Sqls.create("SELECT TOP @record * FROM Inventory");
    sql.params().set("record", 10);
    this.dao.execute(sql);
    

    后来查询资料得知SQL Server中查询使用Select Top ? * From TableName Where ColumnName = ?的SQL语句时,其中的问号?PreparedStatement预编译对象的参数占位符,需要使用setXX()系列方法对其赋值后再执行。

    但是,Top后面是不允许使用问号?占位符的,@P0附近有语法错误就是由此引起的。

    解决方案:

    使用拼接字符串方式拼接SQL语句:

    "Select Top " + record + " * From Inventory"
    

    原文地址:https://www.lwhweb.com/2017/10/03/sql-server-near-p0-error/

    相关文章

      网友评论

          本文标题:SQL Server '@P0'附近有语法错误

          本文链接:https://www.haomeiwen.com/subject/ygezixtx.html