【发布时间】:2017-06-02 15:15:03
【问题描述】:
我有一个带有很多过滤参数的存储过程 我有 2 个 edittext Cardnumber 和 Carcode,这两个都必须填写,然后才能得到任何结果
所以我的问题是,如果其中一个为空或两者均为空,我如何获得结果
protected String doInBackground(String... params) {
try {
Connection con = connectionClass.CONN();
if (con == null) {
z = "Error in connection with SQL server";
} else {
doerTicket = setingPreferences.getString("doerTicket", "");
CallableStatement cs = null;
String query = "exec [file].[usp_getParts] \n@p_ItemNumber = ?,\n@p_DoerTicket = ?,\n@p_CarItemNumber = ?;
cs = con.prepareCall(query);
cs.setString(1, Cardnumber);//edittext(@p_ItemNumber)
cs.setString(2, doerTicket);
cs.setString(3, Carcode);//edittext(@p_CarItemNumber)
ResultSet rs = cs.executeQuery();
while (rs.next()) {
}
} catch (Exception ex) {
z = "Exceptions";
}
return z;
}
}
我当前在sp中使用的参数
ALTER PROCEDURE [file].[usp_getParts]
, @p_ItemNumber VARCHAR ( 3000 ) = NULL
, @p_CarItemNumber NVARCHAR ( 20 ) = NULL
, @p_DoerTicket VARCHAR ( 200 ) = NULL
或者我也可以通过使用得到结果
EXEC @return_value = [file].[usp_getParts]
@p_CarItemNumber = NULL,
@p_ItemNumber = N'*****',
@p_DoerTicket = N'0x01000000f475bad9ea7d1f1d6b142a1b8cc95ce74b3f387cb1388a80097f35a8c1e9131ffa7f4b833553bede4a3abec49254373d06fb3294c60c6d24',
@p_SearchSessionID = @p_SearchSessionID OUTPUT,
@p_TotalRows = @p_TotalRows OUTPUT
【问题讨论】:
-
不知何故您的问题令人困惑:您写道两个字段都必须填写,但您问如果一个或两个字段为空,您如何获得结果!?
-
澄清一下:如果
params为空,您是否正在寻找一种避免设置语句参数的方法? -
是的,那是因为我需要把它们都填满才能得到结果
-
@MarcoStramezzi 是的,所以如果我的编辑文本为空,它不会填充参数
-
我发布了 2 张图片,可以更好地了解我正在尝试做的事情
标签: java sql-server stored-procedures parameters callable-statement