存储过程扫盲

puma_4 2006-12-05 08:39:23
存储过程是不是一堆SQL语句,可以有出入参数?
SQLSERVER上的存储过程是预先定义的还是在程序里定义

要是预先定义的如何用java调用,和写sql得到结果集一样吗?
存储过程可不可以看作是webservice

请给个java调用存储过程的实例
需要输入一个字符参数
输出自定义的结果集

还有存储过程内部的临时变量是怎么定义和调用的
最好有 存储过程的Tutorial
谢谢
...全文
847 35 打赏 收藏 转发到动态 举报
写回复
用AI写文章
35 条回复
切换为时间正序
请发表友善的回复…
发表回复
socoolin1982 2006-12-07
  • 打赏
  • 举报
回复
l h
cfan_wang 2006-12-07
  • 打赏
  • 举报
回复
Mark
kenesyu 2006-12-07
  • 打赏
  • 举报
回复
mark~
弘毅致远 2006-12-07
  • 打赏
  • 举报
回复
一年的JAVA課,偶就去了第一次(睡到老師走),最後一次(考試)
然後到頭來連萬年不變的hello world都不會寫:)
-------------------------------------------------------------------你的星星哪里摘的?
:)
ilove8 2006-12-07
  • 打赏
  • 举报
回复
support
任亚军 2006-12-07
  • 打赏
  • 举报
回复
呵呵,看见雏大哥了
netcup 2006-12-07
  • 打赏
  • 举报
回复
建立楼主先看联机帮助
analysefirst 2006-12-07
  • 打赏
  • 举报
回复
mark
david0927cs2006 2006-12-07
  • 打赏
  • 举报
回复
俺不等JAVA,路过.......
caomm2001 2006-12-07
  • 打赏
  • 举报
回复
private static boolean storeUserUsingSP(Date date,String psid,int prizeCode,String userName,
String tel,String telPrize,String gatewayId,String pwd,int orgId){
SimpleDateFormat dataFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String strDate=dataFormat.format(date);
CallableStatement stmt=null;
int result=0;
try{
if ((conn==null)||(conn.isClosed()))
openConnection();


stmt = conn.prepareCall ("{call sp_cmm_club_prize_store_user (?,?,?,?,?,?,?,?,?,?)}");
stmt.setString(1,strDate);
stmt.setString(2,psid);
stmt.setInt(3,prizeCode);
stmt.setString(4,userName);
stmt.setString(5,tel);
stmt.setString(6,telPrize);
stmt.setString(7,gatewayId);
stmt.setString(8,pwd);
stmt.setInt(9,orgId);
stmt.registerOutParameter(10,java.sql.Types.VARCHAR);

stmt.execute();
result=stmt.getInt(10);
if (result==0)
return true;
else
return false;

}catch(Exception e){
try{
if (conn!=null) conn.close();
}catch(Exception ex){

return false;
}


if (conn!=null) conn=null;
System.out.print(e);
return false;
}finally{
if (stmt!=null)
try{
stmt.close();
stmt=null;
}catch(Exception e){
return false;
}
}


}




sql:


create PROCEDURE [dbo].[sp_cmm_club_prize_store_user]
@joindate datetime,
@psid varchar(20),
@prizecode int=0,
@username varchar(30),
@tel varchar(20),
@telprize varchar(20),
@gatewayid varchar(20),
@pwd varchar(20),
@orgid varchar(30),
@outparam int output

AS
declare @userid int
declare @id int
declare @error int

begin transaction

select @userid=max(id)+1 from cmm_club_prize_joined_users

if @userid=null set @userid=1
insert into cmm_club_prize_joined_users
values
(
@userid,
@psid,
@prizecode,
@joindate,
@username,
@tel,
@telprize,
@gatewayid,
@pwd,
@orgid

)
set @error=@@error
if @error!=0 goto error_handler
if (@prizecode>=1 and @prizecode<=4)
begin

update cmm_club_prize_left set leftamount=leftamount-1 where prizecode=@prizecode

set @error=@@error
if @error!=0 goto error_handler
insert into cmm_club_prize_lucky_users values
(
@userid,
@psid,
@prizecode,
@joindate,
@username,
@tel,
@telprize,
@gatewayid,
@pwd,
@orgid
)
set @error=@@error
if @error!=0 goto error_handler

end


commit transaction

error_handler:
if @@trancount!=0 rollback transaction
set @outparam=@error
return @error
stevenk2003 2006-12-06
  • 打赏
  • 举报
回复
网上应该有很多java调用存储过程的例子,LZ可以找找
marco08 2006-12-06
  • 打赏
  • 举报
回复
--汗, 写错字了
楼上几位,开眼界了吧
marco08 2006-12-06
  • 打赏
  • 举报
回复
楼主几位,开眼界了吧
shuqinpeng 2006-12-06
  • 打赏
  • 举报
回复
mark
baggio328 2006-12-06
  • 打赏
  • 举报
回复
程序调用存储过程的话,把执行存储过程的句子写在原先“select……”部分
leonnet 2006-12-06
  • 打赏
  • 举报
回复
同感楼上
zhouzidane 2006-12-06
  • 打赏
  • 举报
回复
看来是没我说话的余地了
zzit0721 2006-12-06
  • 打赏
  • 举报
回复
兄弟,给你扫盲下
存储过程是一堆SQL语句,可以有参数
SQLSERVER上的存储过程是预先定义的,根据你的需求来.
可以用JAVA调用啊,使用JAVA的SQL执行语句撒
SQL='exec 存储过程名'
结果集肯定一样撒
跟webservice完全不同,概念都不一样大哥
至于例子,自己看SQL上面存储过程多得很
说完,完毕拉哈
shawnwan 2006-12-06
  • 打赏
  • 举报
回复
存储过程是一堆SQL语句,可以有出入参数
SQLSERVER上的存储过程是预先定义,直接存在SQL内,直接调用,

要是预先定义, 得写sql, 因为存储过程是在数据库上的, 数据库不认识java

存储过程应该不可以看作是webservice, 因为他和webservices的暴露方式有差异
playwarcraft 2006-12-06
  • 打赏
  • 举报
回复
一年的JAVA課,偶就去了第一次(睡到老師走),最後一次(考試)
然後到頭來連萬年不變的hello world都不會寫:)
加载更多回复(15)

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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