SQL Server2005关于查询的存储过程,求高手解答--------------十万火急急急急急急急急急(标题要长)

Jucbt 2012-11-21 11:36:58
我要写一个存储过程是一个查询语句,比如说:
create procedure getCust
as
select 这里是java程序里动态改变要查询的字段(因为业务要查得字段不固定,有可能是name,tel,address,也有可能是name,email,type) from t_cust
go
如果这个存储过程成立的话那java程序里又该怎么写?
哪位大虾知道的请帮我想想办法,感激不尽。
...全文
124 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hkh_1012 2012-11-22
  • 打赏
  • 举报
回复
2个思路。 1,根据前台传入的参数在java里拼sql语句 2、创建一个多参的存储过程,再根据入参是否为空拼sql语句
快溜 2012-11-21
  • 打赏
  • 举报
回复
create procedure getCust(@str varchar(100)) as begin exec('select '+@str+' from t_cust') end java调用sqlserver存储过程自己去搜,或者去java版问
开启时代 2012-11-21
  • 打赏
  • 举报
回复
create procedure getCust @col varchar(2000) as begin declare @sqlstr varchar(3000) set @sqlstr='select '+@col+' from t_cust' exec(@sqlstr) end --java 程序里调用时 传参 'a,b,c,d' 就是你想查的列串 就可以了
Jucbt 2012-11-21
  • 打赏
  • 举报
回复
引用 楼主 Jucbt 的回复:
我要写一个存储过程是一个查询语句,比如说: create procedure getCust as select 这里是java程序里动态改变要查询的字段(因为业务要查得字段不固定,有可能是name,tel,address,也有可能是name,email,type) from t_cust go 如果这个存储过程成立的话那java程序里又该怎么写? 哪位大虾知……
上面没说清楚,我是既不知道这个存储过程该怎么写也不知道java里又该怎么写。
Jucbt 2012-11-21
  • 打赏
  • 举报
回复
引用 2 楼 lixzhong 的回复:
create procedure getCust @col varchar(2000) as begin declare @sqlstr varchar(3000) set @sqlstr='select '+@col+' from t_cust' exec(@sqlstr) end --java 程序里调用时 传参 'a,b,c,d' 就是你想……
那我java里那个while里面这样存值的时候会报错的,因为如果没有查这个字段的话,根本拿不到这一列: List<Collect> list=new ArrayList<Collect>(); try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); Connection conn=DriverManager.getConnection( "jdbc:sqlserver://127.0.0.1:1433;databaseName=Test", "sa","as"); PreparedStatement pstmt=conn.prepareStatement("{call dbo.getCollectbalance2(?)}"); String sqlstr=this.field_c_id+","+this.field_balance_seg1_id+","+this.field_balance_seg2_id; pstmt.setString(1, sqlstr); ResultSet rs=pstmt.executeQuery(); while (rs.next()) { Collect c=new Collect(); c.setCId(rs.getInt(field_c_id)); c.setBalanceSeg1Id(rs.getString(this.field_balance_seg1_id)); c.setBalanceSeg2Id(rs.getString(this.field_balance_seg2_id)); list.add(c); } for(int i=0;i<list.size();i++){ System.out.println(list.get(i).getCId()); System.out.println(list.get(i).getBalanceSeg1Id()); System.out.println(list.get(i).getBalanceSeg2Id()); } rs.close(); pstmt.close(); conn.close(); } catch (Exception e) { e.printStackTrace(); } this.result=list; return "testProc"; 我只想到一个一个属性去判断,有没更好的办法?

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧