WSO2DSS服务正在将空值转换为“”(一个空格)
我试图通过DSS服务调用db函数。该db函数基本上是为了更新数据库中的用户值而编写的,该值是从dss作为输入获取的 在my db函数中,如果它的输入值为null,它将不会更新我的postgres数据库中的用户详细信息,否则它将更新。我使用COALESCE函数实现了这一点。我单独测试了db函数的这个功能,它工作得很好 但当我通过dss将null值传递给函数时,dss会将null转换为单个空格并将其传递给函数。函数用于不接收带有单个空格的空更新数据库字段 因为这个问题,我不得不在COALESCE函数中编写更多的逻辑 我想知道为什么dss将空值转换为“” 我的数据库功能如下WSO2DSS服务正在将空值转换为“”(一个空格),wso2,wso2carbon,wso2dss,dss,Wso2,Wso2carbon,Wso2dss,Dss,我试图通过DSS服务调用db函数。该db函数基本上是为了更新数据库中的用户值而编写的,该值是从dss作为输入获取的 在my db函数中,如果它的输入值为null,它将不会更新我的postgres数据库中的用户详细信息,否则它将更新。我使用COALESCE函数实现了这一点。我单独测试了db函数的这个功能,它工作得很好 但当我通过dss将null值传递给函数时,dss会将null转换为单个空格并将其传递给函数。函数用于不接收带有单个空格的空更新数据库字段 因为这个问题,我不得不在COALESCE函数
CREATE OR REPLACE FUNCTION modify_user(customer_id_in character varying, email_id_in character varying, mobile_in character varying, first_name_in character varying, last_name_in character varying)
RETURNS integer AS
$BODY$
BEGIN
IF EXISTS (SELECT 1 FROM ildb_schema.customer_detail WHERE identifier = customer_id_in) THEN
UPDATE ildb_schema.customer_detail
SET first_name=COALESCE(first_name_in,first_name),
last_name=COALESCE(last_name_in,last_name),
mobile_number=COALESCE(mobile_in,mobile_number),
email=COALESCE(email_id_in,email),
last_modify=now()
WHERE identifier = customer_id_in
AND (first_name_in IS NOT NULL AND first_name_in IS DISTINCT FROM first_name
OR last_name_in IS NOT NULL AND last_name_in IS DISTINCT FROM last_name
OR mobile_in IS NOT NULL AND mobile_in IS DISTINCT FROM mobile_number
OR email_id_in IS NOT NULL AND email_id_in IS DISTINCT FROM email);
RETURN 1;
END IF;
RETURN 0;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION ildb_schema.modify_user(character varying, character varying, character varying, character varying, character varying)
OWNER TO postgres;
决策支持系统如下
<data name="update_test">
<config id="ildb">
<property name="carbon_datasource_name">test_database</property>
</config>
<query id="update_function" useConfig="ildb">
<sql>select * from modify_user(:cid,:email,:mob,:fn,:ln)</sql>
<result element="customer" rowName="">
<element column="modify_user" name="modify_user" xsdType="string"/>
</result>
<param defaultValue="null" name="cid" sqlType="STRING"/>
<param defaultValue="null" name="email" sqlType="STRING"/>
<param defaultValue="null" name="mob" sqlType="STRING"/>
<param defaultValue="null" name="fn" sqlType="STRING"/>
<param defaultValue="null" name="ln" sqlType="STRING"/>
</query>
<operation name="update_function_op1">
<call-query href="update_function">
<with-param name="cid" query-param="cid"/>
<with-param name="email" query-param="email"/>
<with-param name="mob" query-param="mob"/>
<with-param name="fn" query-param="fn"/>
<with-param name="ln" query-param="ln"/>
</call-query>
</operation>
<resource method="PUT" path="/update/function">
<call-query href="update_function">
<with-param name="cid" query-param="cid"/>
<with-param name="email" query-param="email"/>
<with-param name="mob" query-param="mob"/>
<with-param name="fn" query-param="fn"/>
<with-param name="ln" query-param="ln"/>
</call-query>
</resource>
</data>
如果要将默认值设置为null,请将其设置为{null}。比如,
<param defaultValue="#{NULL}" name="name" sqlType="STRING"/>
有关更多信息,请参阅