请检查我的sql server的存储过程过程哪里有问题,为什么总是返回-1

存储过程没有返回值的情况(即存储过程语句中没有return之类的语句)
用方法 int count = ExecuteNonQuery(..)执行存储过程其返回值只有两种情况
(1)假如通过查询分析器执行该存储过程,在显示栏中假如有影响的行数,则影响几行count就是几
(2)假如通过查询分析器执行该存储过程,在显示栏中假如显示'命令已成功完成。'则count = -1;在显示栏中假如有查询结果,则count = -1
总结:A.ExecuteNonQuery()该方法只返回影响的行数,假如没有影响行数,则该方法的返回值只能是-1,不会为0。
B.不论ExecuteNonQuery()方法是按照CommandType.StoredProcedure或者CommandType.Text执行,其效果和A一样。
---------------------------------------------------------------------------------------------------------------------------------------------------
获得存储过程的返回值--通过查询分析器获得
(1)不带任何参数的存储过程(存储过程语句中含有return)
---创建存储过程
CREATE PROCEDURE
testReturn
return 145
---执行存储过程
DECLARE @RC int
exec @RC=testReturn
select @RC
查询结果为145
(2)带输入参数的存储过程(存储过程语句中含有return)
---创建存储过程
create procedure sp_add_table1
@in_name varchar(100),
@in_addr varchar(100),
@in_tel varchar(100)
if(@in_name = '' or @in_name is null)
insert into table1(name,addr,tel) values(@in_name,@in_addr,@in_tel)
---执行存储过程
&1&执行下列,返回1
declare @count int exec @count = sp_add_table1 '','中三路','123456' select @count
&2&执行下列,返回0
declare @count int exec @count = sp_add_table1 '','中三路','123456' select @count
查询结果不是0就是1
(3)带输出参数的存储过程(存储过程中可以有return可以没有return)
---创建存储过程
create procedure sp_output
@output int output
set @output = 121
---执行存储过程
&1&执行下列,返回121
declare @out int
exec sp_output @out output
select @out
&2&执行下列,返回1
declare @out int
declare @count int
exec @count = sp_output @out output
select @count
有return,只要查询输出参数,则查询结果为输出参数在存储过程中最后变成的值;只要不查询输出参数,则查询结果为return返回的值
---创建存储过程
create procedure sp_output
@output int output
set @output = 121
---执行存储过程
&1&执行下列,返回121
declare @out int
exec sp_output @out output
select @out
&2&执行下列,返回0
declare @out int
declare @count int
exec @count = sp_output @out output
select @count
没有return,只要查询输出参数,则查询结果为输出参数在存储过程中最后变成的值;只要不查询输出参数,则查询结果为0
(1)存储过程共分为3类:
A.返回记录集的存储过程---------------------------其执行结果是一个记录集,例如:从数据库中检索出符合某一个或几个条件的记录
B.返回数值的存储过程(也可以称为标量存储过程)-----其执行完以后返回一个值,例如:在数据库中执行一个有返回值的函数或命令
C.行为存储过程-----------------------------------用来实现数据库的某个功能,而没有返回值,例如:在数据库中的更新和删除操作
(2)含有return的存储过程其返回值为return返回的那个值
(3)没有return的存储过程,不论执行结果有无记录集,其返回值是0
(4)带输出参数的存储过程:假如有return则返回return返回的那个值,假如要select输出参数,则出现输出参数的值,于有无return无关
---------------------------------------------------------------------------------------------------------------------------------------------------
3.获得存储过程的返回值--通过程序获得
---------------------------------------------------------------------------------------------------------------------------------------------------
SqlParameter[] cmdParms = { .. ,new SqlParameter("@return",SqlDbType.Int)};
cmdParms[cmdParms.Length - 1].Direction = ParameterDirection.ReturnV或者
cmdParms[cmdParms.Length - 1].Direction = ParameterDirection.Output或者
cmdParms[cmdParms.Length - 1].Direction = ParameterDirection.I
得到返回值 object bj = cmdParms[cmdParms.Length - 1].V
阅读(...) 评论()18:55 提问
java使用jdbc调用存储过程,没有返回结果集。。
整个过程是这样的:之前的程序已经上线运行了。后来客户数据库升级,从sqlServer2005升级到sqlServer2008.当然系统也做了相应改动。我们是第三方软件,调用他们的数据库中的存储过程来查询数据。他们升级完系统和数据库之后,我们就查询数据报错。
然后最先报的错是驱动版本问题。我就到网上下了sqljdbc4.jar。替换了之后不再报驱动的问题。但是一直无结果集。于是我直接把调用存储过程的sql语句放到数据库中执行。是能查到结果的。然后,我又把sql语句换成一个简单的select语句。这下有结果集了。那么问题出在哪?该怎么改?
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
con = DriverManager.getConnection("jdbc:sqlserver://10.4.2.10:1433;databaseName=cmp_jxt_jmpt","jmpt_open","jmpt_open*1nl0#");
proc_stmt = con.prepareCall("
exec dbo.Proc_Jmpt_ReturnTemp
'bmtz','"+sfzjh+"',5 ");
proc_stmt = con.prepareCall("select top 5
userId,loginTime,refreshtime from user_online_data");
proc_stmt.setString(1, "bmtz");
proc_stmt.setString(2, sfzjh);
proc_stmt.setString(3, "5");
rs = proc_stmt.executeQuery();
while (rs.next()) {
String newsId = rs.getString("userId");
String title = rs.getString("loginTime");
String detName = rs.getString("refreshtime");
String addDate = rs.getString("addDate");
OA_BMTZ t = new OA_BMTZ();
t.setNewsId(rs.getString("newsId"));
t.setTitle(rs.getString("title"));
t.setDetName(rs.getString("detName"));
t.setAddDate(rs.getString("addDate"));
list.add(t);
代码中可以看出我的修改轨迹。
问题出在哪,请大神指点迷经。
按赞数排序
这是一个 java调用数据库存储过程的 简单例子 你可以看看:
这个是 java调用存储过程的 详解:
问题已经解决了:需要在调用存储过程的语句之前加上“SET NOCOUNT ON
”。例如我的这个例子,把
proc_stmt = con.prepareCall("exec dbo.Proc_Jmpt_ReturnTemp
proc_stmt = con.prepareCall("SET NOCOUNT ON
exec dbo.Proc_Jmpt_ReturnTemp
是什么原因呢?
原来2008的驱动会关注到存储过程执行过程中返回的“影响多少行”这些信息,有这些信息存在,就会抛出空结果集异常:
在sql语句前加“SET NOCOUNT
ON ”,表示不返回计数(表示受 Transact-SQL 语句影响的行数)
感觉和驱动以及更换sql server版本无关,而是你sql查询或者数据的问题。
语句中本身就有那么多空格吗?exec之前?把exec改为call呢
proc_stmt = con.prepareCall("
exec dbo.Proc_Jmpt_ReturnTemp
'bmtz','"+sfzjh+"',5 ");
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐调用SqlServer存储过程报没有返回数据集错误
1. 问题描述
在SqlServer数据库中,若定义的存储过程中包含有insert/update等更新操作时,在设计器中对存储过程进行调用时,会提示没有返回数据集的错误,如下图所示:而在数据库端执行存储过程,能够查询出结果如下:
2.&解决方案
在存储过程中增加SET NOCOUNT ON(不返回受影响行数),让数据库端不将影响的行数返回给客户端或者在模板数据集&数据库查询调用存储过程并设置SET NOCOUNT ON。下面我们以一个具体的示例看下如何设置。
如已经存在了带有insert/update的一个简单的存储过程,如下:create&PROCEDURE&[dbo].[prc_stuff]&&&&
&&&INSERT&INTO&dbo.雇员(雇员id,姓氏)&values(10,'薛')&&&&
&&SELECT&*&from&dbo.雇员where&姓氏=&'薛'&&&&
END &3.1&通过修改存储过程此时修改存储过程,在BEGIN开始时加上SET NOCOUNT ON,如下:ALTER&PROCEDURE&[dbo].[prc_stuff]&&&&
&&&SET&NOCOUNT&ON&&
&&&INSERT&INTO&dbo.雇员(雇员id,姓氏)&values(10,'薛')&&&&
&&&SELECT&*&from&dbo.雇员where&姓氏=&'薛'&&&&
END &&3.2&通过在数据库查询处调用存储过程若存储过程已经定义好,不希望再修改,这时可以通过模板数据集&数据库查询处调用存储过程,并在调用前增加SET NOCOUNT ON,最后执行的语句为:SET&NOCOUNT&ON&&
EXEC&dbo.prc_stuff &&注:Oracle数据库中不存在这样的问题,只要成功创建一个存储过程,在设计器中正常调用即可,不会出现类似的问题。
下载次数:0
如果您认为本文档还有待完善,请
文档内容仅供参考,如果你需要获取更多帮助,请咨询
关于技术问题,您还可以通过获取帮助,论坛上有非常多的大神,有些水平比帆软工程师还要高哦。
若您还有其他非技术类问题,可以联系帆软传说哥(qq:)
此页面有帮助吗?是否SQL SERVER服务器程序是什么意思,为什么我的机器上会有这样的程序
他有什么用处
可以关闭吗
如果没有用,是否可以删除,怎样删除
你看看这个网址吧,也许对你有用:
你可以在安全模式下按Ctrl+Alt+Del这三个键打开任务管理器,查看一下系统进程.看看在里面有没有SQL SERVER这个程序在活动(这里的进程是你系统的必备进程,一个也不能少).如果没有SQL SERVER这个进程在活动.那你就可以删除.点击开始---搜索---文件或文件夹---输入SQL SERVER进行查找.找到后直接把它删除就可以了.
建议人工转换数据类型为程序可接受的类型,这样你的程序不需要再开发,只要写一个小点的转换类型的工具软件就可以了。或者可以直接使用相关的数据库软件进行更改。
SQL SERVER是数据库服务器,一般电脑用不上这个,这是大型数据库专用。
这个按正常步骤安装就可以了啊,不知道你困惑在哪里。。。。
你可以多获取几次服务器列表,有时候服务器忙,如果你的计算机装了防火墙,也无法获取服务器列表,建议把防火墙退出.
存储过程要实现什么功能呢?
--sql server 2005的语句,2008应该没问题
--使用Test数据库
create ta...
答: 我们是做汽车扬声器的,现在要商检,所以需要知道HS编码,有谁知道吗?
答: 学电脑路子很广,可以做室内设计,也可以做网页推广,电子商务,还能去接单子,也可以做传媒,现在是信息化社会,所以,选择计算机,没错!
答: 更新驱动或者修复一下连接
嫌麻烦就把你洗衣机的型号或断皮带,拿到维修点去买1个,自己装上就可以了(要有个小扳手把螺丝放松,装上皮带,拉紧再紧固螺丝)。
这个问题有点不知所问了。
公务员并不由单位性质决定,行政单位行政编的是公务员,但并不是说行政单位的就是公务员,事业单位里面参照管理的也是公务员。
所以你的问题只能回答为:按公务员管理的是公务员。
工行的网银没有软键盘,主要通过安全控件来保证安全,只有安装了工行的安全控件,才能在工行网页上输入密码。
修改密码的操作,你可以在登陆工行网银以后,在“客户服务”的“修改客户密码”里找到相关链接。
一般都是对着电视墙,这样的感觉有一些对私密的保护..
因为一般人在自己家里是比较随便的,有时来了客人也来不及收敛,但是如果正对的是电视墙,就给了主人一个准备的时间,就不至于显得很尴尬..
  慢性低血压一般可分为体质性低血压、体位性低血压和继发性低血压三类。体质性低血压一般认为与遗传和体质瘦弱有关,多见于20~50岁的妇女和老年人,轻者可无任何症状,重者出现精神疲惫、头晕、头痛,甚至昏厥,夏季气温较高时更明显。体位性低血压是指患者体位变换时如从卧位到坐位或直立位时,或长时间站立出现血压突然下降,并伴有头晕、眼前发黑、恶心、心悸、颈背部疼痛等明显症状。体位性低血压一般与某种疾病有关,如多系统萎缩、糖尿病、帕金森氏病、多发性硬化病、更年期障碍等。继发性低血压是由某些疾病或药物引起的低血压,如脊髓空洞症、风湿性心脏病、降压药、抗抑郁药和慢性营养不良症等。也有的人本身有高血压病,总希望血压能降得快一点儿,降得低一点,因此用药过量,导致血压突然降低,并随之带来一系列的症状,医学上称为相对性低血压。
防治成人感冒的方法有:
位置:迎香穴位于鼻翼两旁鼻唇沟处。
手法:每天早起或晚上睡觉前,用双手大鱼际,在鼻翼两旁的迎香穴处,反复擦动约200次。
作用:迎香穴是预防和治疗鼻部疾患的首选穴位,有疏风通窍,解痉止痛的功效,可以有效缓解鼻塞流涕。注意擦迎香穴时,要全身放松,仰卧闭目。切不可憋气瞪眼。
位置:两侧眼眶中间正下方约一寸半处各有一个稍稍凹进去的小“窝”,按上去有酸酸的感觉,这就是四白穴。
作用:按揉四白穴能有效缓解眼胀,鼻塞流涕症状,配合迎香穴效果更好。按压时注意闭眼,放松,按压以酸胀感能忍受为佳。
位置:太阳穴位于两眼外角向外一寸。
作用:按揉太阳穴能够有效缓解头痛,注意按揉时闭眼,全身放松。
手法:取坐位或仰卧位,用两掌贴于面部,上下擦动100次。此手法常被用来作为孩子的眼保健操。
作用:这个动作可以有效松弛紧张的面部肌肉,松弛疲劳的眼肌,改善眼部供血。在防治感冒过程中,这个手法也是很有效的。操作时务必记住要闭目放松全身,紧贴面部皮肤,擦动可快可慢但要力量均匀,才能起到松弛面部肌肉,改善不适症状的作用。
位置:风池穴位于项部,后发际向上一寸,左右各有一个按上去感觉酸酸的小坑。
手法:取坐位,双手抱拢头部,将两手拇指指腹分别按于同侧风池穴,其余四指附于头部两侧,由轻至重按揉1分钟。以有酸胀感为佳,注意操作时闭目。
作用:疏风清热,开窍镇痛。
6. 点按合谷、曲池
位置:合谷穴位于双手的虎口中,点按时注意手指贴近第二掌骨边缘,以感觉酸胀感为佳。曲池穴在两侧肘部横纹外侧,按压上去有酸胀感。
作用:此二穴均可徒手操作,也可家人操作。这两个穴是一切外感病均可应用的穴位,具有很好的清热泻火的作用。但是此二穴禁用于孕妇,以免造成流产。
手法:这个动作需要家人帮助,患者要保持放松,可以正坐,也可以脸朝下俯卧于床上,家人双手柔和地拿住患者两侧肩部肌肉丰满处,然后缓缓地向上提起,放下,再提起,再放下,如是十余次,以局部微微发热,酸胀感传遍全身为度。这个手法孕妇禁用,否则会造成流产。
  阳光照射可加重皮肤及内脏损害,患者应尽量减少户外活动,特别是减少在上午10点到下午4点之间的室外活动。由于患者本身就比常人敏感,防晒也应以物理防晒为主。外出时尽量减少皮肤暴露面积,如戴遮阳帽,打伞等。同时,病情较轻的患者可以在暴露的部位使用温和、刺激性小的防晒霜。
  低血压病人多数没有明显临床症状,少数可表现为头晕、头痛、食欲不振、疲劳、脸色苍白、消化不良等。症状严重的可出现直立性眩晕、四肢冰冷、心悸、呼吸困难、共济失调甚至昏厥。这些症状主要是因为血压下降导致血液循环缓慢,灌注不足,毛细血管缺血,以致影响组织细胞氧气和营养的供应,二氧化碳及代谢废物的排泄,尤其影响大脑和心脏的血液供应。如果低血压状况长期得不到改善,会使机体功能大大下降,导致视力、听力下降,精神疲惫,心情压抑,诱发或加重老年性痴呆,严重的可因灌注不足而导致大面积脑梗死和心肌缺血、心绞痛等。
  该方法最大的特点是不用打针和服药,打破传统的季节限制,在冬至及立春期间,采用特制的膏药外敷在人体特定的穴位上,通过刺激穴位及药物的渗透吸收,起到疏通经络、健脾益肺、温化痰湿的作用,以提高呼吸道的抵抗力。
条件:1)满足12年以上国内正规学习经历2)200日语学时证明
3)20万存款保证金
4)支付人需要有一定的经济能力
5)有一定的留学目标
洮河绿石开采雕刻始于唐而盛于宋。砚石主要产于卓尼县东北境内洮砚乡的喇嘛崖。甘肃盛产洮砚,兰州有一位洮砚大师,其工作室和商铺就在兰州市城关区。大师名叫:马胜强。大家可以百度一下,信息很多。其家乡落世代以刻制洮砚为业,洮砚文化源远流长,自小耳濡目染,深受父辈制砚文化熏陶。从事洮砚制作二十余载,研习古法,立足创新,雕刻作品因材施艺,力求大气、厚重或飘逸、洒脱,追求意境情趣。所创作品被国内外爱好者及多家专业机构收藏。2011年评为甘肃省工艺美术大师。
杭州模特拍摄比较专业的团队是杭州五蕴文化创意有限公司,这家公司服务很细致,口碑也很高,我很信赖这家公司!
我推荐您找众邦钢板仓,他们的产品坚实耐用,在行业中领先许多的同行,如果您有需要的话,选择他们不会错。
日本签证的有效期限:除外交及公务护照外,原则上过境和观光签证为4个月;其他签证为6个月。有效入境次数,原则上仅限一次,再度入境时必须重新办理签证。例外者,如果确认属于必要,也给予2次或数次有效签证。日本留学签证有效期限为12个月,同学们在有效期截止前,应提前重新办理签证,以便在日本正常学习和生活。
正在加载...
Copyright &
Corporation, All Rights Reserved
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区
相关问答:123456789101112131415sqlserver2005 存储过程返回值的问题_百度知道
sqlserver2005 存储过程返回值的问题
--下面是test1过程
Create PROCEDURE [dbo].[test1](
@s nvarchar(20) ,
@id int OUTPUT
SET NOCOUNT ON;
SET @id = 1
declare @s nvarchar(20),@id int,@ret int
exec @ret=test1 @s,@id
select @id,@ret
我有更好的答案
返回结果的方式有很多我说两种,一种是利用存储过程的参数可以把存储过程的结果返回,另外一种是在外部接收存储过程内部return出来的结果。当然啦,还可以在存储过程内部select要返回的结果。 比如: create&proc&test&&@p_errormsg&varchar(80)&=&''&out&&as&&&select&@p_errormsg&=&'测试'&&&return&-100go--------------------------------------------------------------declare&@errorcode&int&declare&@errormsg&varchar(80)&exec&@errorcode&=&test&@errormsg&outselect&@errorcode&as&errorcode,&@errormsg&as&errormsg&&--@errorcode是return出来的结果&@errormsg&是输出参数@p_errormsg的执行结果
采纳率:80%
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 sql server的存储过程 的文章

 

随机推荐