2012-01-25 20 views
5

Mam następujących funkcjiWywoływanie funkcji zdefiniowanych przez użytkownika CREATE tabela

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

Muszę zadzwonić z nim tworzenie tabeli

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

Dostaję błąd

' GetIdentity "nie jest uznaną wbudowaną nazwą funkcji.

Jak mogę to rozwiązać?

Odpowiedz

2

Trzeba dodać dbo (lub cokolwiek nazwa schematu jest), aby poprawnie wywołać funkcję:

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

Chociaż na Twój przykład do pracy, którą chcesz zrobić coś takiego:

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 

oświadczenie SELECT przyniesie rezultaty:

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

Należy wywołać funkcję zdefiniowaną przez użytkownika z nazwą schematu, na przykład:

dbo.GetIdentity() 
Powiązane problemy