SQL Error: An expression of non-boolean type specified in a context where a condition is expected, near 'AND'
SQL Error: An expression of non-boolean type specified in a context where a condition is expected, near 'AND'
我有下面的 sql 可以在 sql studio
Declare @where nvarchar(MAX) = 'ORG_TYPE_CODE LIKE ''%INC%'''
Declare @sql nvarchar(MAX) = 'SELECT * FROM C_B_ORG_DTL WHERE '+@where+' AND HUB_STATE_IND=1'
Exec sp_executeSQL @sql
我正在尝试在 JPA 中实现它
@Query(value = "Declare @where nvarchar(MAX) = ?1 " +
"Declare @sql nvarchar(MAX) = 'SELECT * FROM C_B_ORG_DTL WHERE '+@where+' AND HUB_STATE_IND=1' " +
"Exec sp_executeSQL @sql", nativeQuery = true)
List<CBPty> getAllCompanies(String orgType);
我遇到了错误
An expression of non-boolean type specified in a context where a condition is expected, near 'AND'
如何让它发挥作用?提前致谢
你的错误在这里:
@Query(value = "Declare @where nvarchar(MAX) =** ?1** " +
"Declare @sql nvarchar(MAX) = 'SELECT * FROM C_B_ORG_DTL WHERE '+@where+' AND HUB_STATE_IND=1' " +
"Exec sp_executeSQL @sql", nativeQuery = true)
List<CBPty> getAllCompanies(String orgType);
如果替换后写查询变成:
SELECT * FROM C_B_ORG_DTL WHERE 1 AND HUB_STATE_IND=1
如果您在组合 @where
变量的 Where 部分中查看,您必须在其中使用布尔表达式,例如
SELECT * FROM C_B_ORG_DTL WHERE ORG_TYPE_CODE LIKE '%INC%' AND HUB_STATE_IND=1;
成功了。我在传入的@where 参数中遇到语法问题。
@Query(value = " DECLARE @where nvarchar(MAX)" +
" SET @where = (?1) " +
" EXEC('SELECT * FROM C_B_ORG_DTL WHERE '+@where+' AND HUB_STATE_IND=1' )", nativeQuery = true)
List<CBPty> getAllCompanies(String orgType);
如果我们在 sql 中 运行 个动态生成的片段,我们需要使用 EXEC。希望这对遇到类似问题的人有用。
我有下面的 sql 可以在 sql studio
Declare @where nvarchar(MAX) = 'ORG_TYPE_CODE LIKE ''%INC%'''
Declare @sql nvarchar(MAX) = 'SELECT * FROM C_B_ORG_DTL WHERE '+@where+' AND HUB_STATE_IND=1'
Exec sp_executeSQL @sql
我正在尝试在 JPA 中实现它
@Query(value = "Declare @where nvarchar(MAX) = ?1 " +
"Declare @sql nvarchar(MAX) = 'SELECT * FROM C_B_ORG_DTL WHERE '+@where+' AND HUB_STATE_IND=1' " +
"Exec sp_executeSQL @sql", nativeQuery = true)
List<CBPty> getAllCompanies(String orgType);
我遇到了错误
An expression of non-boolean type specified in a context where a condition is expected, near 'AND'
如何让它发挥作用?提前致谢
你的错误在这里:
@Query(value = "Declare @where nvarchar(MAX) =** ?1** " +
"Declare @sql nvarchar(MAX) = 'SELECT * FROM C_B_ORG_DTL WHERE '+@where+' AND HUB_STATE_IND=1' " +
"Exec sp_executeSQL @sql", nativeQuery = true)
List<CBPty> getAllCompanies(String orgType);
如果替换后写查询变成:
SELECT * FROM C_B_ORG_DTL WHERE 1 AND HUB_STATE_IND=1
如果您在组合 @where
变量的 Where 部分中查看,您必须在其中使用布尔表达式,例如
SELECT * FROM C_B_ORG_DTL WHERE ORG_TYPE_CODE LIKE '%INC%' AND HUB_STATE_IND=1;
成功了。我在传入的@where 参数中遇到语法问题。
@Query(value = " DECLARE @where nvarchar(MAX)" +
" SET @where = (?1) " +
" EXEC('SELECT * FROM C_B_ORG_DTL WHERE '+@where+' AND HUB_STATE_IND=1' )", nativeQuery = true)
List<CBPty> getAllCompanies(String orgType);
如果我们在 sql 中 运行 个动态生成的片段,我们需要使用 EXEC。希望这对遇到类似问题的人有用。