gpt4 book ai didi

sql-server - 使用 UDF 作为 SQL Server 中表列的默认值

转载 作者:行者123 更新时间:2023-12-03 02:29:54 24 4
gpt4 key购买 nike

我在 SQL Server 2012 Express 中创建了一个缩放器 UDF(称为 sCurrentAppUser()),并且我想在定义表时使用此 UDF 作为默认值。但每次我尝试时,都会收到错误“'sCurrentAppUser'不是可识别的内置函数名称。”

由于我还不能发布两个以上的链接(声誉),因此我将在评论中链接到我的研究和引用文献。

这是我的 UDF:

ALTER FUNCTION [dbo].[sCurrentAppUser] ()
RETURNS nVarChar(128)
AS BEGIN
DECLARE @CurrentAppUser nVarChar(128)

IF EXISTS (SELECT 1 FROM ActiveConnections WHERE ComputerName = host_name ()) BEGIN
SELECT @CurrentAppUser = CONVERT (nVarChar(128), LoginUser)
FROM ActiveConnections
WHERE ComputerName = host_name ()

END ELSE BEGIN
SELECT @CurrentAppUser = Convert (nVarChar(128), suser_sname ())
WHERE NOT EXISTS (
SELECT 1
FROM ActiveConnections
WHERE ComputerName = host_name ()
)

END

RETURN @CurrentAppUser

END

我尝试在第一列上创建具有默认约束的表:

CREATE TABLE [dbo].[Clients](
[ModifyingUser] [nvarchar](128) NOT NULL DEFAULT sCurrentAppUser (),
[Modification] [char](1) NULL DEFAULT 'A',
[ModifyingHost] [nvarchar](128) NOT NULL DEFAULT host_name (),
[ClientID] [uniqueidentifier] NOT NULL,
[Label] [nvarchar](1024) NULL,
CONSTRAINT [PK_Clients] PRIMARY KEY (
[ClientID] ASC
)
)

最佳答案

您应该为该函数添加架构名称:

CREATE TABLE [dbo].[Clients](
[ModifyingUser] [nvarchar](128) NOT NULL DEFAULT dbo.sCurrentAppUser (),
[Modification] [char](1) NULL DEFAULT 'A',
[ModifyingHost] [nvarchar](128) NOT NULL DEFAULT host_name (),
[ClientID] [uniqueidentifier] NOT NULL,
[Label] [nvarchar](1024) NULL,
CONSTRAINT [PK_Clients] PRIMARY KEY (
[ClientID] ASC
)
)

关于sql-server - 使用 UDF 作为 SQL Server 中表列的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30402167/

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