你好,fcuandy,上次指点的存储过程 还得麻烦你一下,

ex3206 2008-11-07 01:31:37
你好,fcuandy,还的麻烦你一下,上次指点的存储过程
http://topic.csdn.net/u/20081106/12/1807bb8f-9b87-4425-b231-f8b13560aa70.html
我现在还有点问题,我希望在原来的一个存储过程里调用这个存储过程,
create PROC [dbo].[AppendUser](
@groupId INT=null,
@name nvarchar(80)
)
AS
DECLARE @uid int
INSERT Info (groupId,单位名称)Values(@groupId,@name)
SET @uid = SCOPE_IDENTITY()

-----添加映射关系

declare @mm varchar(2)
set @mm = Convert(varchar(2),@uid)
Exec [dbo].[CreateIDRelation]
@groupId, 0, @mm

执行出现错误 :DELETE 失败,因为下列 SET 选项的设置不正确:'ARITHABORT'。请确保 SET 选项可正确用于计算列和/或查询通知和/或 xml 数据类型方法的索引视图和/或索引
请指教

...全文
108 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ex3206 2008-11-18
  • 打赏
  • 举报
回复
穷人的问题就没有人回答了吗?
ex3206 2008-11-13
  • 打赏
  • 举报
回复
问题依然存在,老大们生把手呀
注册失败 2008-11-10
  • 打赏
  • 举报
回复
在存储过程的begin 后加一句:SET NOCOUNT ON
在end前还加一句 SET NOCOUNT OFF
试试
ex3206 2008-11-09
  • 打赏
  • 举报
回复
对, 在dbhelper里是这样的
//执行不带参数的非查询语句
public static int ExecuteCommand(string sql)
{
SqlCommand scmd = new SqlCommand(sql, Connection);
int row = scmd.ExecuteNonQuery();
return row;
}
你说的直接用 command.exec... 是如何使用?


[Quote=引用 7 楼 fcuandy 的回复:]
dbhelper的问题吧,直接command.exec...试试
[/Quote]
ex3206 2008-11-09
  • 打赏
  • 举报
回复
除了在sql server的查询浏览器里,程序里用任何的调用方式都出现
执行出现错误 :DELETE 失败,因为下列 SET 选项的设置不正确:'ARITHABORT'。请确保 SET 选项可正确用于计算列和/或查询通知和/或 xml 数据类型方法的索引视图和/或索引
这个错误

[Quote=引用 7 楼 fcuandy 的回复:]
dbhelper的问题吧,直接command.exec...试试
[/Quote]
fcuandy 2008-11-08
  • 打赏
  • 举报
回复
dbhelper的问题吧,直接command.exec...试试
ex3206 2008-11-08
  • 打赏
  • 举报
回复
你好,
http://topic.csdn.net/u/20081107/13/df630a80-c1be-4429-b554-15f9d4582a90.html

http://topic.csdn.net/u/20081106/12/1807bb8f-9b87-4425-b231-f8b13560aa70.html
帖子,感谢你的指导,这两个帖子在sql server 查询浏览器里执行都没有问题
但如果我创建为存储过程后,在程序里调用确出现问题

执行出现错误 :DELETE 失败,因为下列 SET 选项的设置不正确:'ARITHABORT'。请确保 SET 选项可正确用于计算列和/或查询通知和/或 xml 数据类型方法的索引视图和/或索引

调用方式为 :
string sql = "exec CreateIDRelation " +
newid + "," + oldid + " ,N'" + babyids + "'";
return DBHelper.ExecuteCommand(sql);

其他存储过程也是这样调用的,没有问题,去掉" ,N'"里面的N也不行


[Quote=引用 5 楼 fcuandy 的回复:]
SQL codeCREATE TABLE emp(eid INT IDENTITY(1,1),eName nVARCHAR(50))
CREATE TABLE dep(did INT IDENTITY(1,1),dName nVARCHAR(50))
CREATE TABLE erd(did INT,eid INT)
GO
INSERT dep SELECT N'X' UNION ALL SELECT N'Y' UNION ALL SELECT N'Z'
--INSERT emp SELECT N'a' UNION ALL SELECT N'b' UNION ALL SELECT N'c' UNION ALL SELECT N'd' UNION ALL SELECT N'e'

GO
SELECT * FROM emp
SELECT * FROM dep
SELEC…
[/Quote]
fcuandy 2008-11-07
  • 打赏
  • 举报
回复
CREATE TABLE emp(eid INT IDENTITY(1,1),eName nVARCHAR(50))
CREATE TABLE dep(did INT IDENTITY(1,1),dName nVARCHAR(50))
CREATE TABLE erd(did INT,eid INT)
GO
INSERT dep SELECT N'X' UNION ALL SELECT N'Y' UNION ALL SELECT N'Z'
--INSERT emp SELECT N'a' UNION ALL SELECT N'b' UNION ALL SELECT N'c' UNION ALL SELECT N'd' UNION ALL SELECT N'e'

GO
SELECT * FROM emp
SELECT * FROM dep
SELECT * FROM erd
GO
CREATE TABLE info(gid INT,uid INT IDENTITY(1,1))
GO

CREATE PROC p
--注意这里我的oldid,newid的顺序与你的是反的,看数据时注意一下就可以了。
@newid INT,@oldid INT,@ids VARCHAR(1000)
AS
BEGIN
DELETE a FROM erd a
INNER JOIN
(SELECT id FROM
(SELECT x = CAST('<r>' + REPLACE(@ids,',','</r><r>') + '</r>' AS XML)) a
CROSS APPLY
(SELECT id=t.x.value('.','int') FROM a.x.nodes('//r') AS t(x)) b
) b
ON a.eid = b.id AND a.did = @oldid

INSERT erd SELECT @newid,b.id
FROM
(SELECT x = CAST('<r>' + REPLACE(@ids,',','</r><r>') + '</r>' AS XML)) a
CROSS APPLY
(SELECT id=t.x.value('.','int') FROM a.x.nodes('//r') AS t(x)) b
WHERE NOT EXISTS(SELECT 1 FROM erd WHERE eid=b.id) AND @newid!=0


END
GO

DECLARE @uid INT,@gid INT
SET @gid=3
INSERT info(gid) SELECT @gid
SET @uid = SCOPE_IDENTITY()
EXEC p @gid,0,@uid
SELECT * FROM emp
SELECT * FROM info
SELECT * FROM erd
/*
3 1
没有问题
*/
GO
DROP TABLE emp,dep,erd ,info
GO
DROP PROC p
GO

ex3206 2008-11-07
  • 打赏
  • 举报
回复
目的是为了统一执行,请问如果一定得这样做的话,改如何写呢? 谢谢

[Quote=引用 3 楼 fcuandy 的回复:]
你这里@mm是单值,不必用那个存储过程。
[/Quote]
fcuandy 2008-11-07
  • 打赏
  • 举报
回复
你这里@mm是单值,不必用那个存储过程。
ex3206 2008-11-07
  • 打赏
  • 举报
回复
谢了
linguojin11 2008-11-07
  • 打赏
  • 举报
回复
SF?帮顶下
--------------常规说明-----------------------------
1,adbbs现行版采用ACCESS+ASP进行开发。
2,采用CSDN(专家分)与CNITI(版主分)双结合方式进行评分。具体如下:
(1),用户分值分为三种:
a BT:基本分
b PT:专家分
c MT:版主分
BT为用户基本分,由注册后获得200分基本分,每发一主题贴减去5分,上传一次附件减去10分,发一回复贴减1分。每天登陆时自动加20分.发主题贴时的主题分值亦由此而出.即可以给帮助自己解决问题的人进行分值奖历,而将历的分值将成为获分人的专家分
PT,为用户专家分,由解决问题时主题作者评分。
MT,为版主分,由版主给予评分。
(2)分值转换
1MT=10PT=100BT
只能按BT<=PT<=MT进行转换
当您BT不足时,可在资料选项里由MT或PT换成BT再进行发贴。
3,贴子列表时采用ID分页,以提高检索速度。另,只提供5页的上下分页,更多的请到论坛搜索,精确您的定位
4,提供快速注册,更详细的资料可在注册完毕后进行更改
5,后续版本为XML配置版,将采用XML+XSL+DTD+CSS来控制页面版式
6,此版本之后是SQL版,为大容量要求而定制。
7,最终版是C#的XML配置SQL存储版
默认管理员帐户和密码均为fcuandy

------------此版本说明------------------------------
1,此版本为adbbs ver 1.02版,也可称其为1.01的改进版,中间有一过渡版1.011
2,1.01以为灰色基调;1.011未正式发布过,以白色谈雅为主;1.02版采用了活泼的风格
3,1.02版在美化了1.01版基础上又对程序及数据表进行了些许优化,以求更高的执行效率;首页执行速度比起1.01版提高了60%
4,1.02又分为免费版和付费版(付费access版和付费sql存领储过程版,免费版仅为access版);免费版没有投票版面设定权限自定义头象后台站点配置管理等功能;付费版投票功能采用ASP+VML实现拼形图统计效果,投票统计效果 www.cnADO.com/drawVml.asp 提供演示 5,1.02版延续1.01版中对贴子列表采用ID分页的方式,以提高效率

22,294

社区成员

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

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