我有一个用于创建表,存储过程,视图等的数据库创建脚本。当我在create table语句中更改列的类型时,我希望此更改能够反映在创建存储过程/视图/等中引用该表的语句,而无需仔细检查并手动更改每个表。
换句话说,我希望存储过程根据创建时另一列的类型自动确定列的类型。我不需要这个就可以在具有数据的实时数据库上工作,而只是在迭代设计和原型时。
在这个(虚构的)示例中,类似于TYPE_OF()
:
create table Logs
(
id int identity(1, 1) primary key,
userName varchar(32),
logType int foreign key references LogType(id),
description varchar(128),
datestamp datetime
);
go
create procedure WriteLog
(
@userName TYPE_OF(Logs.userName), -- should be varchar(32),
@logType int,
@description TYPE_OF(Logs.description) -- should be varchar(128)
)
as
begin
insert into Logs
values(@userName, @logType, @description, SYSDATETIME());
end
go;
我想我还记得与Oracle / SQL Plus / PLSQL类似的东西,但是我找不到它。
我正在使用SQL Server Management Studio v18.4
不知道您是否正在寻找TYPEOF功能,但是您可以尝试使用DDL Trigger使您的过程与列类型更改保持同步。