sql - 在 Exec 存储过程命令 SQL Server 中使用表列
问题描述
我有一个命令:
exec [Database].[dbo].DepartmentChangeLevel , Department, Date, Level;
我目前手动明确地指定值,如下所示:
exec [Database].[dbo].DepartmentChangeLevel , 'Catering', '20180101 08:01:00', 3;
但是,我想运行相同的命令并使用表中的值 - 如下所示:
exec [Database].[dbo].DepartmentChangeLevel
select
[Department], [Date], [Level]
from
[Database].[dbo].[DepartmentChange]
我得到的错误信息是
期望未提供的参数@department
请帮忙
解决方案
您可以改用光标:
在您的表上创建一个 Cursor 并将所有三列传递给三个变量并在游标中执行 proc。
例子 :
declare db_cursor cursor
for select
[Department], [Date], [Level]
from
[Database].[dbo].[DepartmentChange];
declare @department int --your column data type
,@date datetime --your column data type
,@level varchar(10) --your column data type
OPEN db_cursor;
FETCH NEXT FROM db_cursor INTO @department, @date, @level;
WHILE @@FETCH_STATUS = 0
BEGIN
exec [Database].[dbo].DepartmentChangeLevel @department, @date, @level;
DELETE FROM [Database].[dbo].DepartmentChangeLevel ---or you can store values from DepartmentChangeLevel table into temporary table then delete those values from temporary table
WHERE [Department]=@department
and [Date]=@date
and [Level]=@level
FETCH NEXT FROM db_cursor INTO @department,@date, @level
END
CLOSE db_cursor;
DEALLOCATE db_cursor;
推荐阅读
- c# - Winforms图表突然很慢C#
- vue.js - response.data 不同的输出 - Vue.js
- assembly - 加载字[MIPS]解释
- python-3.x - 如何让 Selenium 和 beautifulsoup 工作得更快?
- linux - 从 Linux 中的特定文本行打印单个部分
- ios - 无法学习为 Swift 4 Xcode 10 制作 QR 扫描仪
- arrays - 为什么在 Angular 5 应用程序中无法访问内部数组打字稿?
- python - 使用 Bokeh 绘制时间序列
- java - aop:aspectj-autoproxy 和 tx:annotation-driven 冲突在 spring
- ruby-on-rails - 仅在 Rails 中用于管理员的 sidekiq 监控