具有CREATE TABLE或CREATE PROCEDURE是否可以自动确定SSMS中的列类型?

问题描述 投票:0回答:1

我有一个用于创建表,存储过程,视图等的数据库创建脚本。当我在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

sql-server tsql ssms
1个回答
0
投票

不知道您是否正在寻找TYPEOF功能,但是您可以尝试使用DDL Trigger使您的过程与列类型更改保持同步。

© www.soinside.com 2019 - 2024. All rights reserved.