您好我有一个存储过程如下,
Create PROCEDURE my_car(
in diesel integer,
out milege integer)
P1: BEGIN
SET START_query = 'SELECT*';
SET FROM_CLAUSE = ' FROM car, diesel';
SET WHERE_CLAUSE = ' WHERE car.c1 = diesel.c2';
IF (diesel =0) THEN
SET WHERE_CLAUSE = +WHERE_CLAUSE+'AND car.diesel=0' ;
ELSE
SET WHERE_CLAUSE = +WHERE_CLAUSE+' AND car.diesel='+diesel ;
END IF;
END P1
但它的投掷错误如下。
DB2 SQL Error: SQLCODE=-402, SQLSTATE=42819, SQLERRMC=+, DRIVER=3.52.90
如果我们使用||而不是+ 即,
SET WHERE_CLAUSE = WHERE_CLAUSE || 'AND car.diesel=0' ;
然后它的投掷错误如下,
DB2 SQL Error: SQLCODE=-440, SQLSTATE=42884, SQLERRMC=||;FUNCTION, DRIVER=3.52.90
请帮忙。 非常感谢。
答案 0 :(得分:0)
在DB2中,||
而不是+
用于字符串连接。
此外,柴油是一个字符串,你将它与零进行比较。如果您希望柴油为0或1值,则应将其类型设置为整数。如果它需要是一个字符串,您应该将其与''
或'0'
或其他任何有意义的内容进行比较。
我不确定+V_WHERE_CLAUSE+
你的意思,但你的代码应该是这样的:
IF (diesel = '0') THEN
SET WHERE_CLAUSE = WHERE_CLAUSE || 'AND car.diesel=0';
ELSE
SET WHERE_CLAUSE = WHERE_CLAUSE || ' AND car.diesel=' || diesel;
END IF;
或者只是这个:
SET WHERE_CLAUSE = WHERE_CLAUSE || ' AND car.diesel=' || diesel;