Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用可选参数调用存储过程_Java_Mysql_Spring Mvc_Jdbc - Fatal编程技术网

Java 使用可选参数调用存储过程

Java 使用可选参数调用存储过程,java,mysql,spring-mvc,jdbc,Java,Mysql,Spring Mvc,Jdbc,基本上我有一个接受8个参数的存储过程,它只基于所有这些参数执行查询并给我一个输出,但现在我有一个情况,我可以在1到8个参数之间的任意位置传递一个值或多个值,它应该能够完美地工作,并且应该根据已经传递的参数返回一些值。 我的StoredProcess在MySQL中,我通过Java代码中的CallableStatement调用它。 下面是我的StoredProcess的片段 DELIMITER $$ CREATE PROCEDURE get_details(IN cus_name varchar

基本上我有一个接受8个参数的存储过程,它只基于所有这些参数执行查询并给我一个输出,但现在我有一个情况,我可以在1到8个参数之间的任意位置传递一个值或多个值,它应该能够完美地工作,并且应该根据已经传递的参数返回一些值。 我的StoredProcess在MySQL中,我通过Java代码中的CallableStatement调用它。 下面是我的StoredProcess的片段

DELIMITER $$


CREATE PROCEDURE get_details(IN cus_name varchar(255),u_id int, ent_type varchar(255)
,branchId varchar(255), from_date datetime,to_date datetime, val varchar(255),rep_status varchar(255)
)
BEGIN
SELECT
r.id,r.parent_request_id,r.customer_master_id,
r.user_master_id,r.request_status,

cm.customer_name,

u.unique_id,

c.branch_id,c.created_date,c.entity_name,
c.entity_status,c.entity_type,c.no_of_documents,
c.no_of_parties,c.request_id,c.validity,c.itr_validity

FROM request as r
left join user_master as u on r.user_master_id = u.id
left join customer_master as cm  on u.customer_master_id = cm.id
left join customer_entity as c  on r.id= c.request_id

where 
customer_name = cus_name and 
unique_id = u_id and
entity_type = ent_type and
branch_id = branchId and
created_date >= from_date and
created_date <= to_date and
validity = val and 
request_status = rep_status and
entity_status='parent';

END$$
DELIMITER ;
分隔符$$
创建过程获取详细信息(在cus_name varchar(255)、u_id int、ent_type varchar(255)中)
,branchId varchar(255),from_date datetime,to_date datetime,val varchar(255),rep_status varchar(255)
)
开始
挑选
r、 id,r.父项\请求\ id,r.客户\主项\ id,
r、 用户\u主\u id,r.请求\u状态,
cm.客户名称,
u、 唯一标识,
c、 分支机构id,c.创建日期,c.实体名称,
c、 实体状态、c.实体类型、c.文件编号、,
c、 无第三方,c.请求id,c.有效性,c.itr有效性
从作为r的请求
左连接用户\u主机作为r上的u。用户\u主机\u id=u.id
左键将客户\主机作为cm连接到u上。客户\主机\ id=cm.id
在r.id=c.request\U id上以c的形式左键加入客户\U实体
哪里
客户名称=客户名称和
唯一的\u id=u\u id和
实体类型=ent类型和
branch_id=branchId和
创建日期>=从日期和

为存储过程中的可选参数创建了\u date,您可以这样编写

CREATE PROCEDURE get_details(IN cus_name varchar(255)='',u_id int=0, ent_type varchar(255)='',
branchId varchar(255)='', from_date datetime=null,to_date datetime=null, val    varchar(255)='',rep_status varchar(255)=''
 )
BEGIN
you query syntex

您在这方面有没有遇到任何错误,或者您到底想做什么?存储过程不支持可变数量的arguments@YCF_L是的,我确实在com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078)的com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)中获得了java.sql.SQLException:No为参数1指定的值在com.mysql.jdbc.SQLError.createSQLException(SQLError.java:975)和com.mysql.jdbc.SQLError.createSQLException(SQLError.java:920)上,您可以编辑您的问题,也可以输入错误there@e4c5你能在几个例子中分享吗?不管怎样,你传递的是空值,而返回的不是值。
CREATE PROCEDURE get_details(IN cus_name varchar(255)='',u_id int=0, ent_type varchar(255)='',
branchId varchar(255)='', from_date datetime=null,to_date datetime=null, val    varchar(255)='',rep_status varchar(255)=''
 )
BEGIN
you query syntex