在SQL Server 查询分析器中调试复杂的SQL语句(30分)

  • 主题发起人 主题发起人 YFeral
  • 开始时间 开始时间
Y

YFeral

Unregistered / Unconfirmed
GUEST, unregistred user!
我写了一些SQL语句,大约有30多行。中间有游标,循环。我想知道怎么监视游标的
每次取值情况,也就是说象在Delphi中调试程序一样调试SQL语句。
 
看到的朋友帮忙提前一下。
 
如果要在查询器里监视的话,如果是存储过程等,要去掉前面的创建过程的语句,
变成一般的语句,在你想监视的地方,用SELECT 要监视的字段或变量进行监视;
 
to hewen7509:
能不能设置断点,还有没有更好的方法?
 
存储过程调试时不是能设断点吗?

右键单击你的存储过程->调试


 
呵呵,抱歉我不用存储过程,我只是把它们写在程序里。
 
写成存储过程,利用RAPIDSQL软件跟踪运行即可,非常好用,软件在www.51delphi.com
上有下载,使用中有什么问题来信,有问必答!
 
RAPIDSQL 对Oracle要好一点,对于Sql有时不行。
 
谢谢各位,在试试的同时我还想知道不用存储过程行不行。
 
用:print '提示信息!'
应该 可以的
 
Easy,装个Visual Studio.net就能调试了。
 
靠!打死我我也不装 Visual Studio.net的,至少是现在。
to armylink:
这个东西还行,不过好象是有期限的。没期限的有没有。
 
楼上!
有破解呀,你没破解吗?
 
好的,我看看
 
请教各位,在游标中使用变量怎么不行啊。有解决办法吗?
 
贴出代码看看,我常用啊
 
/*声名用于添加记录的变量*/
DECLARE @YNum Integer
DECLARE @YMoney Numeric(18, 2)
DECLARE @YP_Bh VarChar(10)
DECLARE @YP_PDH VarChar(20)
DEClARE @YP_Class Char (1)
DECLARE @YP_Name VarChar(60)
DECLARE @YP_Size VarChar(20)
DECLARE @YP_Unit VarChar(20)
DECLARE @YP_JX VarChar(8)
DECLARE @YP_JFDJ money
DECLARE @YP_JFSL integer
DECLARE @YP_JFJE Numeric(18, 2)
DECLARE @YP_KFBH Char(3)
DECLARE @YP_KFName VarChar(16)


/*得到余金额、余数量,在每一次取药品的数量帐信息时打开一次*/
DECLARE RestMoneyNUM_cursor SCROLL CURSOR FOR
SELECT YP_YSL, YP_YJE FROM YP_YKList
WHERE (YP_KFBH = '11') AND
(YP_Class = '1') AND
(YP_Bh = @YP_BH) --此处的变量老是传不过去。
ORDER BY JZ_XH DESC

/*得到要添加的所有旧药品的流水帐*/
DECLARE AppendSource_cursor SCROLL CURSOR FOR
SELECT YP_BH, YP_RPDH AS YP_PDH, YP_Name, YP_Size, YP_Unit,
YP_JX, YP_PFJ AS YP_JFDJ, YP_RSL AS YP_JFSL, YP_RJE AS YP_JFJE
FROM YP_YKIn
WHERE (YP_RPDH IN('XRK11_010012')) AND
(YP_BH IN(SELECT YP_BH FROM YP_DrugDict))
GROUP BY YP_BH, YP_RPDH, YP_Name, YP_Size, YP_Unit, YP_JX, YP_PFJ,
YP_RSL, YP_RJE
OPEN AppendSource_cursor

/*开始添加药品流水帐*/
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM AppendSource_cursor
INTO @YP_BH, @YP_PDH, @YP_Name, @YP_Size, @YP_Unit,
@YP_JX, @YP_JFDJ, @YP_JFSL, @YP_JFJE
/*取出此药品的余金额,余数量*/
OPEN RestMoneyNUM_cursor
FETCH FIRST FROM RestMoneyNUM_cursor INTO @YNum, @YMoney
CLOSE RestMoneyNUM_cursor
/*添加一个药品的数量帐信息*/
INSERT INTO YP_YKList (YP_KFBH, YP_KFName, YP_Class, YP_PDH,YP_BH,
YP_Name, YP_Size, YP_Unit, YP_JX, YP_JFDJ, YP_JFSL,YP_JFJE, YP_YSL,

YP_YJE)VALUES('11', '西药库
', '1', @YP_PDH, @YP_BH, @YP_Name,
@YP_Size, @YP_Unit, @YP_JX, @YP_JFDJ, @YP_JFSL, @YP_JFJE,
@YP_JFSL + @YNum, @YP_JFJE + @YMoney)
END
DEALLOCATE RestMoneyNUM_cursor
CLOSE AppendSource_cursor
DEALLOCATE AppendSource_cursor
 
各位费神,比较长慢慢看。
我也在查资料呀
 
/*声名用于添加记录的变量*/
DECLARE @YNum Integer
DECLARE @YMoney Numeric(18, 2)
DECLARE @YP_Bh VarChar(10)
DECLARE @YP_PDH VarChar(20)
DEClARE @YP_Class Char (1)
DECLARE @YP_Name VarChar(60)
DECLARE @YP_Size VarChar(20)
DECLARE @YP_Unit VarChar(20)
DECLARE @YP_JX VarChar(8)
DECLARE @YP_JFDJ money
DECLARE @YP_JFSL integer
DECLARE @YP_JFJE Numeric(18, 2)
DECLARE @YP_KFBH Char(3)
DECLARE @YP_KFName VarChar(16)

/*得到要添加的所有旧药品的流水帐*/
DECLARE AppendSource_cursor SCROLL CURSOR FOR
SELECT YP_BH, YP_RPDH AS YP_PDH, YP_Name, YP_Size, YP_Unit,
YP_JX, YP_PFJ AS YP_JFDJ, YP_RSL AS YP_JFSL, YP_RJE AS YP_JFJE
FROM YP_YKIn
WHERE (YP_RPDH IN('XRK11_010012')) AND
(YP_BH IN(SELECT YP_BH FROM YP_DrugDict))
GROUP BY YP_BH, YP_RPDH, YP_Name, YP_Size, YP_Unit, YP_JX, YP_PFJ,
YP_RSL, YP_RJE
OPEN AppendSource_cursor

/*开始添加药品流水帐*/
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM AppendSource_cursor
INTO @YP_BH, @YP_PDH, @YP_Name, @YP_Size, @YP_Unit,
@YP_JX, @YP_JFDJ, @YP_JFSL, @YP_JFJE
/*取出此药品的余金额,余数量*/
/*得到余金额、余数量,在每一次取药品的数量帐信息时打开一次*/
SELECT @YP_YSL=YP_YSL, @YP_YJE=YP_YJE FROM YP_YKList WHERE (YP_KFBH = '11') AND (YP_Class = '1') AND (YP_Bh = @YP_BH) ORDER BY JZ_XH

/*添加一个药品的数量帐信息*/
INSERT INTO YP_YKList (YP_KFBH, YP_KFName, YP_Class, YP_PDH,YP_BH,
YP_Name, YP_Size, YP_Unit, YP_JX, YP_JFDJ, YP_JFSL,YP_JFJE, YP_YSL,

YP_YJE)VALUES('11', '西药库
', '1', @YP_PDH, @YP_BH, @YP_Name,
@YP_Size, @YP_Unit, @YP_JX, @YP_JFDJ, @YP_JFSL, @YP_JFJE,
@YP_JFSL + @YNum, @YP_JFJE + @YMoney)
END

CLOSE AppendSource_cursor
DEALLOCATE AppendSource_cursor
 
后退
顶部