gpt4 book ai didi

sql-server - 根据表中列的定义在存储过程中创建变量

转载 作者:行者123 更新时间:2023-12-05 00:13:40 25 4
gpt4 key购买 nike

有没有办法使用表中列的定义来定义存储过程中的变量?例如,在表 Employees 中,有一个名为 LastName 的列。在 INFORMATION_SCHEMA.COLUMNS 中,您可以获得 DATA_TYPE ('nvarchar') 和 CHARACTER_MAXIMUM_LENGTH (50)。我想知道是否可以使用这两个描述符在存储过程中创建变量。我看到有人在 Oracle 中使用了一种非常相似的技术。他们创建了一个表并使用定义来声明一个变量:

CREATE TABLE TEST_CONSTANTS (
MAX_LEN VARCHAR2(32)
);


DECLARE x TEST_CONSTANTS.MAX_LEN%TYPE;
BEGIN
x := 'Test';
dbms_output.put_line(x);
END;

我想做类似的事情。这样,如果表中的列发生变化,我可能不必更改我的代码(而且我也不想使用 varchar(max))。

如果需要进一步说明,请告诉我。

TIA!!

最佳答案

没有基于列类型定义变量数据类型的 TSQL 语法。

原则上你可以使用用户定义的数据类型来做类似的事情,

CREATE TYPE [dbo].[EmployeeLastName] 
FROM [nvarchar](50) NOT NULL;

GO

CREATE TABLE [dbo].[Employee]
(
EmployeeId INT PRIMARY KEY,
LastName [dbo].[EmployeeLastName] NOT NULL
)

DECLARE @X [dbo].[EmployeeLastName]

SET @X = 'Test'

但实际上它们有各种限制,这可能会让您放弃这个想法。请参阅 Bart Duncan 的文章 T-SQL UDTs. (Huh!) What are they good for?对于其中一些。

关于sql-server - 根据表中列的定义在存储过程中创建变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17175011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com