我在sql server2008数据库里面创建了一个带参数的存储过程,在VS里面调用,明明给了参数,为什么还报错?
---创建存储过程createprocproc_AllSeller@msgFromnvarchar(20),@msgContentnvarchar(200),@msgFr...
---创建存储过程create proc proc_AllSeller@msgFrom nvarchar(20),@msgContent nvarchar(200),@msgFromState nvarchar(50),@msgToState nvarchar(50),@msgStartTime datetime,@msgTitle nvarchar(50)asdeclare @i intSet @i=1declare @name nvarchar(20)While(2>1)Begin--所有卖家Set @name=( Select userName from( Select userName,ROW_NUMBER() over(order by username) r from v_seller ) v where v.r=@i)if not exists ( Select userName from( Select userName,ROW_NUMBER() over(order by username) r from v_seller ) v where v.r=@i)BreakInsert into Message values(NEWID(),@msgFrom, @name, @msgContent, @msgFromState, @msgToState, @msgStartTime, @msgTitle)Set @i=@i+1End
---VS里面调用存储过程 展开
---VS里面调用存储过程 展开
2个回答
展开全部
作为第一个参数,也将NEWID()也放入存储过程试试。
下面是sql帮助中的说明:
SQL函数中不能使用“不确定函数”,只要是每次执行都返回不同结果的函数都无法使用,这些“不确定函数”会导致自定义的函数也变得不确定,而SQL不支持用户编写“不确定函数”。
下面是sql帮助中的说明:
SQL函数中不能使用“不确定函数”,只要是每次执行都返回不同结果的函数都无法使用,这些“不确定函数”会导致自定义的函数也变得不确定,而SQL不支持用户编写“不确定函数”。
更多追问追答
追问
你是说将NEWID()也当做参数传进去吗?这样不行啊,这个编号是唯一的,不能这样传进去循环添加!
追答
可惜,我的的开发系统已经多年不用VB或VS。你这样试试呢:
DECLARE @myid uniqueidentifier
SET @myid = NEWID()
然后将@myid带到Message values() 里看看。
你的@msgFrom处理本身没发现错误,还是调用错误使系统误判了参数的顺序,报出找不到某个参数。
追问
这个我也试过了,它总是说”与那方法最匹配的重载方法具有一些无效参数“。
entity.ExecuteFunction(sql, prm)不对,entity.ExecuteFunction (sql, prm)也不对,好像我这参数也没写错吧,sql是存储过程名称,prm是参数数组
追答
我发错了,如果你要执行.ExecuteFunction,你要在你执行在数据源中定义并在概念模型中表示的存储过程或函数,而你是没有定义的。你要把存储过程映射到你的概念模型上。
你要在ssdl,csdl,msl,加入对于的映射,也可以添加那个实体的时候选择表的时候把存储过程加进去会自动加。http://msdn.microsoft.com/zh-cn/library/vstudio/bb896279(v=vs.100).aspx
可以参考这个
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询