SQL Groovy - context.expand自定义属性错误ORA-01756

时间:2016-08-22 14:03:10

标签: sql oracle groovy soapui

尝试在groovy中运行sql语句并将结果存储到def变量中,但遇到以下错误消息:

  

java.sql.SQLException:ORA-01756:引用的字符串不正确   终止。

这是我的sql语句:

def Indicator = sql.firstRow("SELECT COUNT(*) FROM REQUEST WHERE REQD_IND IS NOT NULL AND CUST_FORENAMES = '" + context.expand('${#Project#Forename}')+ "'AND CUST_SURNAME = '" + context.expand('${#Project#Surname}'));

当我在没有sql.firstRow函数的情况下运行语句时,它返回日志中的整个select语句,但能够访问自定义属性,但是它是我之后的结果,即true / false

2 个答案:

答案 0 :(得分:2)

ORA-01756:引用字符串未正确终止是因为'中的最后一个SELECT丢失了。

为避免错误并保持SELECT清除,我建议改为使用firstRow(String sql,List<Object> params)方法:

def indicator = sql.firstRow(
    '''SELECT COUNT(*) 
    FROM REQUEST 
    WHERE REQD_IND IS NOT NULL 
    AND CUST_FORENAMES = ?
    AND CUST_SURNAME = ?''',
    [context.expand('${#Project#Forename}'),context.expand('${#Project#Surname}')])

此外,如果您只想获取行数,请使用COUNT(*)的别名,并从firstRow方法返回的结果中取回:

def indicator = sql.firstRow(
    '''SELECT COUNT(*) as count
    FROM REQUEST 
    WHERE REQD_IND IS NOT NULL 
    AND CUST_FORENAMES = ?
    AND CUST_SURNAME = ?''',
    [context.expand('${#Project#Forename}'),context.expand('${#Project#Surname}')])

// use the alias to get simply the number
def count = indicator.count

答案 1 :(得分:0)

你能试试吗

def forename = context.expand('${#Project#Forename}')
def surname = context.expand('${#Project#Surname}')
def indicator = sql.firstRow("SELECT COUNT(*) FROM REQUEST WHERE REQD_IND IS NOT NULL AND CUST_FORENAMES = $forename AND CUST_SURNAME = $surname");