gpt4 book ai didi

sql - 在 CREATE TABLE 语句中使用用户定义的函数

转载 作者:行者123 更新时间:2023-12-04 00:55:59 25 4
gpt4 key购买 nike

我正在尝试创建下表

CREATE TABLE Ingredient.Ingredient 
(
GUID UNIQUEIDENTIFIER NOT NULL ROWGUIDCOL,
Name NVARCHAR(MAX) NOT NULL UNIQUE
)

但我已经意识到 NVARCHAR UNIQUE 列的最大大小为 450(至少在当前版本的 SQL Server 中)。为了不使用魔术文字,我创建了一个用户定义的函数,它返回 NVARCHAR UNIQUE 列的当前最大大小。

CREATE FUNCTION [Max NVARCHAR Index Size]()
RETURNS INTEGER
BEGIN
RETURN(450)
END

此函数在调用时正确运行

SELECT dbo.[Max NVARCHAR Index Size]()

我希望在 CREATE TABLE 语句中使用此函数,但出现如下所示的错误。

CREATE TABLE Ingredient.Ingredient 
(
GUID UNIQUEIDENTIFIER NOT NULL ROWGUIDCOL,
Name NVARCHAR(dbo.[Max NVARCHAR Index Size]()) NOT NULL UNIQUE
)

错误:

Msg 102, Level 15, State 1, Line 13
Incorrect syntax near '('

为了尝试避免这种情况,我用函数的值创建了一个变量,然后使用该变量,但这也不起作用。

DECLARE
@NVARCHARIndexSize INTEGER = dbo.[MAX NVARCHAR Index Size]()

CREATE TABLE Ingredient.Ingredient
(
GUID UNIQUEIDENTIFIER NOT NULL ROWGUIDCOL,
Name NVARCHAR(@NVARCHARIndexSize) NOT NULL UNIQUE
)

错误:

Msg 102, Level 15, State 1, Line 13
Incorrect syntax near '@NVARCHARIndexSize'

第 13 行是 Name NVARCHAR(@NVARCHARIndexSize) NOT NULL UNIQUE

有没有办法在 CREATE TABLE 语句中使用变量/函数而不是文字?

提前致谢。

最佳答案

您可以使用以下语法在 SQL Server 中创建自定义类型

CREATE TYPE MyCustomType  
FROM NVARCHAR(420);

以后可以在创建表时使用自定义类型

CREATE TABLE Ingredient 
(
GUID UNIQUEIDENTIFIER NOT NULL ROWGUIDCOL,
[Name] MyCustomType NOT NULL UNIQUE
)

关于sql - 在 CREATE TABLE 语句中使用用户定义的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62526806/

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