这是因为语句周围有大括号。默认情况下,Postgres 驱动程序将这些语句视为函数调用并翻译该语句。您可以删除它们以使用本机 sql:
call sp_employee_generate(:pn_name,:pn_age,:pn_add1,:pn_add2,:pn_add3,:pn_city,:pn_state,:pn_pin,:pn_Mobile_no,:pn_Email_id,:pn_Employee_no)
您可以通过类似于以下的数据源配置来执行此操作:
<bean id="dataSource" class="org.postgresql....">
<property name="URL" value='"jdbc:postgresql://localhost:5432/bla />
<property name="User" value="<USER>" />
<property name="Password" value="<PASSWORD>" />
<property name="ConnectionProperties">
<value>
escapeSyntaxCallMode:call
</value>
</property>
</bean>
或者您可以将连接属性
escapeSyntaxCallMode
设置为 call
: https://jdbc.postgresql.org/documentation/publicapi/org/postgresql/jdbc/EscapeSyntaxCallMode.html
这里有一个很好的解释和更多选择:“x是一个过程,当我已经使用call时使用“call””