2012-01-25 21 views
5

Ho la seguente funzioneCalling funzioni definite dall'utente con CREATE TABLE

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

ho bisogno di chiamarlo con create table

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

sto ottenendo l'errore

' GetIdentity 'non è un nome di funzione predefinito riconosciuto.

Come posso risolvere questo?

risposta

2

è necessario aggiungere dbo (o qualunque sia il nome dello schema è) per chiamare correttamente la funzione:

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

Anche se, per il vostro esempio funzioni, che ci si vuole fare qualcosa di simile:

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 

La dichiarazione SELECT produrrà i risultati:

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

È necessario chiamare la funzione definita dall'utente con il nome dello schema, ad esempio:

dbo.GetIdentity() 
Problemi correlati