的流程是怎样的,在线等

查看: 3267|回复: 7
VBA调用存储过程的问题,在线等
阅读权限20
在线时间 小时
& & & & & & & &
本帖最后由 darknet 于
11:50 编辑
代码如下:
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim cmd As New ADODB.Command
'Dim param As New ADODB.Parameter
Dim strCn As String, strSQL As String
strCn = &Provider=Server=Database=DUid=Pwd=123;&
conn.Open strCn
strSQL = &spGetData&
cmd.ActiveConnection = conn
'Set param = cmd.CreateParameter(&@UserName&, adVarChar, adParamInput, 50, &aaa&)
'cmd.Parameters.Append param
cmd.CommandText = strSQL
cmd.CommandType = adCmdStoredProc
Set rs = cmd.Execute
可是我得到的rs总是空的,单独在数据库中执行存储过程是可以得到值的。我原来以为是传参数问题,后来改成没有参数的存储过程也不行。还有一个现象,我原来的存储过程比较简单,只有一句Select,这个时候用Set rs = conn.Execute(strSQL)就能返回结果,后来我把存储过程内容改了下,先创建临时表,然后用了下游标,然后join了几张表,select出来,最后drop临时表。改了之后我就没法得到结果了,请问下,这是什么原因啊?十万火急啊,在线等!
阅读权限20
在线时间 小时
另外加一句,在执行中没有抛出错误信息,但rs总是为空的。
阅读权限20
在线时间 小时
我试了下简单的一句Select语句的存储过程,都可以正常调用的,但存储过程一复杂就不行了,求解。
阅读权限20
在线时间 小时
ALTER PROCEDURE [dbo].[spGetNewBusinessData]
--@UserName NVARCHAR(50)
& & & & IF OBJECT_ID(N'#Rev', N'U') IS NOT NULL
& & & & BEGIN
& & & && &&&DROP TABLE #Rev
& & & & END
& & & & DECLARE @NB_ID INT
& & & & DECLARE @Q1 INT
& & & & DECLARE @Q2 INT
& & & & DECLARE @Q3 INT
& & & & DECLARE @Q4 INT
& & & & CREATE TABLE #Rev
& & & & & & & & NB_ID& && &INT,
& & & & & & & & FY1_Q1& &&&INT,
& & & & & & & & FY1_Q2& &&&INT,
& & & & & & & & FY1_Q3& &&&INT,
& & & & & & & & FY1_Q4& &&&INT,
& & & & & & & & FY2_Q1& &&&INT,
& & & & & & & & FY2_Q2& &&&INT,
& & & & & & & & FY2_Q3& &&&INT,
& & & & & & & & FY2_Q4& &&&INT,
& & & & INSERT INTO #Rev
& & & && &(
& & & && &&&NB_ID,
& & & && &&&FY1_Q1,
& & & && &&&FY1_Q2,
& & & && &&&FY1_Q3,
& & & && &&&FY1_Q4
& & & && &)
& & & & SELECT nbr.NB_ID,
& & & && && &&&nbr.Q1,
& & & && && &&&nbr.Q2,
& & & && && &&&nbr.Q3,
& & & && && &&&nbr.Q4
& & & & FROM& &tbl_NewBusinessRev AS nbr
& & & & WHERE&&nbr.FiscalYear = 'FY15'
& & & & DECLARE RevCsr CURSOR&&
& & & & FOR
& & & && &&&SELECT nbr.NB_ID,
& & & && && && && &nbr.Q1,
& & & && && && && &nbr.Q2,
& & & && && && && &nbr.Q3,
& & & && && && && &nbr.Q4
& & & && &&&FROM& &tbl_NewBusinessRev AS nbr
& & & && &&&WHERE&&nbr.FiscalYear = 'FY16'
& & & & --For each loop in tbl_NewBusiness_Temp
& & & & OPEN RevCsr
& & & & FETCH NEXT FROM RevCsr INTO @NB_ID, @Q1,@Q2,@Q3,@Q4
& & & & WHILE @@FETCH_STATUS = 0
& & & & BEGIN
& & & && &&&PRINT @NB_ID
& & & && &&&UPDATE #Rev
& & & && &&&SET& & FY2_Q1 = @Q1,
& & & && && && && &FY2_Q2 = @Q2,
& & & && && && && &FY2_Q3 = @Q3,
& & & && && && && &FY2_Q4 = @Q4
& & & && &&&WHERE&&NB_ID = @NB_ID
& & & && &&&
& & & && &&&FETCH NEXT FROM RevCsr INTO @NB_ID, @Q1,@Q2,@Q3,@Q4
& & & & END
& & & & CLOSE RevCsr
& & & & DEALLOCATE RevCsr
& & & & SELECT l.LOB,
& & & && && &&&c.Category,
& & & && && &&&ps.PrimarySubcategory,
& & & && && &&&ct.ContractType,
& & & && && &&&nb.LicenseeName,
& & & && && &&&s.[Status],
& & & && && &&&p.Person& && && && && && && &AS LOBHead,
& & & && && &&&p2.Person& && && && && && &&&AS MgrName,
& & & && && &&&p3.Person& && && && && && &&&AS ReferralName,
& & & && && &&&t.Type,
& & & && && &&&nb.Franchise,
& & & && && &&&nb.Movies,
& & & && && &&&nb.StartDate,
& & & && && &&&nb.EndDate,
& & & && && &&&nb.CreditRating,
& & & && && &&&nb.RoyaltyRate,
& & & && && &&&l2.Location,
& & & && && &&&nb.CMF,
& & & && && &&&nb.TotalMG,
& & & && && &&&nb.Details,
& & & && && &&&nb.PDSupport,
& & & && && &&&nb.DateLicenseeApproached,
& & & && && &&&#Rev.FY1_Q1,
& & & && && &&&#Rev.FY1_Q2,
& & & && && &&&#Rev.FY1_Q3,
& & & && && &&&#Rev.FY1_Q4,
& & & && && &&&#Rev.FY2_Q1,
& & & && && &&&#Rev.FY2_Q2,
& & & && && &&&#Rev.FY2_Q3,
& & & && && &&&#Rev.FY2_Q4
& & & & FROM& &tbl_NewBusiness& && && && &&&AS nb
& & & && && &&&INNER JOIN tbl_Category& && &AS c
& & & && && && && & ON&&c.CategoryID = nb.CategoryID
& & & && && &&&INNER JOIN tbl_LOB& && && &&&AS l
& & & && && && && & ON&&l.LOBID = nb.LOBID
& & & && && &&&INNER JOIN tbl_Location& && &AS l2
& & & && && && && & ON&&l2.LocationID = nb.LocationID
& & & && && &&&INNER JOIN tbl_Person& && &&&AS p
& & & && && && && & ON&&p.PersonID = nb.LOBHeadID
& & & && && &&&INNER JOIN tbl_Person& && &&&AS p2
& & & && && && && & ON&&p2.PersonID = nb.MgrNameID
& & & && && &&&LEFT JOIN tbl_Person& && && &AS p3
& & & && && && && & ON&&p3.PersonID = nb.ReferralNameID
& & & && && &&&INNER JOIN tbl_PrimarySubcategory AS ps
& & & && && && && & ON&&ps.PrimarySubcategoryID = nb.PrimarySubcategoryID
& & & && && &&&INNER JOIN tbl_Status& && &&&AS s
& & & && && && && & ON&&s.StatusID = nb.StatusID
& & & && && &&&INNER JOIN tbl_Type& && && & AS t
& & & && && && && & ON&&t.TypeID = nb.TypeID
& & & && && &&&INNER JOIN tbl_ContractType&&AS ct
& & & && && && && & ON&&ct.ContractTypeID = nb.ContractTypeID
& & & && && &&&INNER JOIN #Rev
& & & && && && && & ON&&#Rev.NB_ID = nb.NB_ID
& & & & --WHERE nb.LastUpdatedBy = @UserName
& & & & --DROP TABLE #Rev
阅读权限20
在线时间 小时
存储过程如上面所示,求解啊,百思不得其解了。简单的select调用没有问题,存储过程稍微一复杂就不行了。
阅读权限20
在线时间 小时
Error 3704 Operation is not allowed when the object is closed.&&得到这个报错信息,但我前面的代码里面没有关闭任何东西啊,为什么会报这个错误呢???
在线求解答。
阅读权限20
在线时间 小时
找到问题原因了,忘了加下面这句了。
SET NOCOUNT ON
http://p2p.wrox.com/classic-asp-basics/80221-operation-not-allowed-when-object-closed.html
阅读权限100
在线时间 小时
本帖最后由 liucqa 于
23:48 编辑
SET NOCOUNT
使返回的结果中不包含有关受 Transact-SQL 语句影响的行数的信息。
SET NOCOUNT { ON | OFF }
当 SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数)。当 SET NOCOUNT 为 OFF 时,返回计数。
即使当 SET NOCOUNT 为 ON 时,也更新 @@ROWCOUNT 函数。
当 SET NOCOUNT 为 ON 时,将不给客户端发送存储过程中的每个语句的 DONE_IN_PROC 信息。当使用 Microsoft® SQL Server™ 提供的实用工具执行查询时,在 Transact-SQL 语句(如 SELECT、INSERT、UPDATE 和 DELETE)结束时将不会在查询结果中显示&nn rows affected&。
如果存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。
SET NOCOUNT 设置是在执行或运行时设置,而不是在分析时设置。
SET NOCOUNT 权限默认授予所有用户。
下例在 osql 实用工具或 SQL Server 查询分析器中执行时,可防止显示有关受影响的行数的信息。
-- Display the count message.
SELECT au_lname
FROM authors
-- SET NOCOUNT to ON and no longer display the count message.
SET NOCOUNT ON
SELECT au_lname
FROM authors
-- Reset SET NOCOUNT to OFF.
SET NOCOUNT OFF
基本上他们的结论是:使用NOCOUNT能够减少网络的传输.当我们SET NOCOUNT ON时执行的存储过程每执行sql语句(像 SELECT, INSERT, UPDATE, DELETE)时会忽略向客户端发送DONE_IN_PROC消息.
如果我们判断Update更新数据是否成功时,最简便的方法就是ExecuteNonQuery()&0.在使用SET NOCOUNT ON时,ExecuteNonQuery总是返回-1.一个很好的解决方法就是使用out parameter方式来输出是否成功 .
最新热点 /1
ExcelHome每周都有线上直播公开课,
国内一流讲师真身分享,高手贴身答疑,
赶不上直播还能看录像,
关键居然是免费的!
厚木哥们都已经这么努力了,
你还好意思说学不好Office。
玩命加载中,请稍候
玩命加载中,请稍候
Powered by
本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任! & & 本站特聘法律顾问:徐怀玉律师 李志群律师请问图片里的方程组怎么解,最好是没个步骤都有,在线等,急。。_百度知道
请问图片里的方程组怎么解,最好是没个步骤都有,在线等,急。。
我有更好的答案
com/zhidao/wh%3D600%2C800/sign=7c82b54fdbb/ecccbf4e3e.jpg" esrc="http://b.hiphotos://b.baidu.baidu.hiphotos.baidu.com/zhidao/pic/item/ecccbf4e3e.jpg" target="_blank" title="点击查看大图" class="ikqb_img_alink"><img class="ikqb_img" src="http://b.hiphotos<a href="http
为您推荐:
其他类似问题
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。人体中毒后,应该去哪里做鉴定?整个流程是怎样的?在线等!_百度知道
人体中毒后,应该去哪里做鉴定?整个流程是怎样的?在线等!
我有更好的答案
如果是食物中毒,可去疾控中心鉴定。
怀疑化学物质中毒(被人投毒)
及时报告公安局,(带上可疑样品)由公安局工作人员调查取证。患者及时去医院就诊治疗,查病因?
为您推荐:
其他类似问题
您可能关注的内容
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。(在线等!)求特征值和特征向量的步骤是?_百度知道
该问题可能描述不清,建议你
(在线等!)求特征值和特征向量的步骤是?
我有更好的答案
baidu给了一个例子
采纳率:79%
来自团队:
为您推荐:
其他类似问题
特征向量的相关知识
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。3被浏览600分享邀请回答01 条评论分享收藏感谢收起

我要回帖

更多关于 免费任务管理软件 的文章

 

随机推荐