sql - 执行存储过程时,过程内部的循环无限运行
问题描述
USE CIS111_BookStoreMC
GO
IF OBJECT_ID('spAssetInfo') IS NOT NULL
DROP PROC spAssetInfo
GO
CREATE PROC spAssetInfo
AS
SELECT AssetID, Description, Cost, PurchaseDate
INTO #temptable
FROM Assets
ALTER TABLE #temptable ADD CompleteDepreciationYear DATE
DECLARE @value MONEY;
SET @value = 0.00;
DECLARE @j INT;
DECLARE @depreciationNum INT;
SET @j = 1;
WHILE (@j <= 14)
BEGIN
SET @depreciationNum = 0;
SET @value = (select Cost From Assets Where AssetID = @j);
SET @j = @j + 1;
WHILE(@value > 0)
BEGIN
SET @value = @value - (@value * 0.2);
SET @depreciationNum = @depreciationNum + 1;
END
INSERT INTO #temptable
(CompleteDepreciationYear)
VALUES
(DATEADD(year, @depreciationNum, CAST((select PurchaseDate From Assets Where AssetID = @j-1) AS DATE)))
END
SELECT * FROM #temptable
我已经尝试了好几个小时,基本上我试图显示带有 PurchaseDate 的资产库存和项目完全折旧的日期,资产每年折旧 20%。我尝试创建一个临时表并将一些资产表列复制到其中,然后为资产完全折旧的日期添加一列。
出于某种原因,当我尝试执行诸如“EXEC spAssetInfo”之类的过程时,查询将永远运行
我忘记将它包含在屏幕截图中,但我也有 SELECT * FROM #temptable 在执行过程时显示表格
解决方案
推荐阅读
- c++ - Ros 构建 CMake 工作区
- string - Golang 写文件时出现断字符
- google-apps-script - 添加新行时自动填充复选框 - AppsScript / Google Sheets
- java - 如何使用 jar 运行黄瓜?
- reactjs - 如何从另一个类 React-native 调用函数
- laravel - 数据表ajax渲染中的按钮单击在Vue中不起作用
- javascript - 如何在网格中实现垂直列?ExtJS 6
- c# - 如何自动增加参加特定课程的学生人数?
- c# - 控制器查询参数(未生效)
- cordova - 为什么 ionic 应用程序在没有 webview 插件的情况下使用跨域工作