2012-01-25 61 views
5

我有以下功能調用用戶定義的函數使用create table

CREATE FUNCTION GetIdentity() RETURNS INT AS 
BEGIN 
    RETURN (IDENT_CURRENT('tblTempPo')) 
END 
GO 

我需要調用它使用create table

create table tblTempPo 
(
ID int null, 
BrickVolume AS 
       (
       GetIdentity() 
      ) 
) 

,我發現了錯誤

「 GetIdentity'不是公認的內置函數名稱。

我該如何解決這個問題?

回答

2

您需要添加dbo(或任何架構名稱)正確地調用該函數:

create table tblTempPo 
(
    ID int null, 
    BrickVolume AS(dbo.GetIdentity()) 
) 

雖然,你的示例工作,你會想要做這樣的事情:

CREATE TABLE tblTempPo 
(
    ID INT IDENTITY(1,1) NOT NULL, 
    AnotherField VARCHAR(10), 
    BrickVolume AS (dbo.GetIdentity()) 
) 
GO 

INSERT INTO tblTempPo VALUES('a') 
INSERT INTO tblTempPo VALUES('b') 
INSERT INTO tblTempPo VALUES('c') 
SELECT * FROM tblTempPo 

SELECT聲明將產生的結果:

ID  AnotherField  BrickVolume 
----------------------------------- 
1   a    3 
2   b    3 
3   c    3 
0

您應該使用其模式名稱調用用戶定義的函數,如:

dbo.GetIdentity()