Sql server 2008 SP作为计算列规格?

Sql server 2008 SP作为计算列规格?,sql-server-2008,Sql Server 2008,我有以下几点 create procedure dbo.i114_get_next_oid as begin DECLARE @id as integer DECLARE @num_ids as integer EXEC dbo.i144_get_ids 2, 1, @id output, @num_ids output SELECT @id as N'@base_id' end go 它通过调用 exec dbo.i114_get_next_oid 我们的应用程序需求有所增长,我想知道如

我有以下几点

create procedure dbo.i114_get_next_oid
as
begin
DECLARE @id as integer
DECLARE @num_ids as integer
EXEC dbo.i144_get_ids 2, 1, @id output, @num_ids output
SELECT  @id as N'@base_id'
end
go
它通过调用

exec dbo.i114_get_next_oid
我们的应用程序需求有所增长,我想知道如何使用“exec dbo.i114_get_next_oid”作为计算列规范?还是一个禁忌?这让我抓狂。谢谢

下面是表模式

CREATE TABLE [dbo].[TBL_VITAL_EVENTS](
    [Location_ID] [uniqueidentifier] NOT NULL,
    [Event_ID] [uniqueidentifier] NOT NULL,
    [OBJECTID] [uniqueidentifier] NULL,
 CONSTRAINT [PK_TBL_VITAL_EVENTS] PRIMARY KEY CLUSTERED 
(
    [Event_ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

ALTER TABLE [dbo].[TBL_VITAL_EVENTS]  WITH CHECK ADD  CONSTRAINT [FK_TBL_VITAL_EVENTS_GRSM_VITAL_SIGNS_PLOTS] FOREIGN KEY([Location_ID])
REFERENCES [dbo].[GRSM_VITAL_SIGNS_PLOTS] ([Location_ID])
GO

ALTER TABLE [dbo].[TBL_VITAL_EVENTS] CHECK CONSTRAINT [FK_TBL_VITAL_EVENTS_GRSM_VITAL_SIGNS_PLOTS]
GO

ALTER TABLE [dbo].[TBL_VITAL_EVENTS] ADD  CONSTRAINT [DF_TBL_VITAL_EVENTS_Event_ID]  DEFAULT (newsequentialid()) FOR [Event_ID]
GO 
目前,应用程序GIS通过应用程序中硬编码的C填充OBJECTID字段。我们需要绕过这种逻辑,因为在插入到业务表之前,插入的数据驻留在adds表中,我们正在对插入的数据执行一些附加操作。因此,我们现在的需求是使用SP或其他方法作为触发器,或计算列规范,使用下一个OID顺序填充OID字段。下一个OID由函数dbo.i144_get_ids管理,不幸的是,由于应用程序的体系结构,我们无法在insert上不使用该SP。这来源于以下供应商文件:

您可以使用交叉应用从函数生成列。您没有提到您的表是什么样子,也没有提到您对此的查询,所以这里有一个场景。如果您可以将SP重写为TVF,或者只使用函数而不是SP,则可以使用:

SELECT t.<fields>, fun.UID
FROM MyTable t
CROSS APPLY dbo.MyFunction(t.Inputfield, t.inputfield2) as Fun

该列已存在,不确定创建另一列是否可以解决此问题。编辑原文以澄清。