2009-11-04 41 views
1

我想在主數據庫中它的自我SQL SERVER OBJECT_ID

IF OBJECT_ID(N'DB1.dbo.T_table1', N'U') IS NOT NULL 
    AND COLUMNPROPERTY(OBJECT_ID(N'db1.dbo.T_table1'), 
         'KEY_value','AllowsNull') IS NOT NULL 
SELECT 'TRUE' AS COLUMNSTATUS 
ELSE 
SELECT 'FALSE' AS COLUMNSTATUS 

,但它不工作來執行查詢?給我建議。

+1

嘗試,這是它給你一個錯誤?如果是這樣:什麼錯誤?它只是沒有返回預期的數據?你期望什麼,你得到了什麼? – 2009-11-04 08:53:55

+0

當從主數據庫測試時,我得到了假值 但我在DB1執行我得到了真正的值 – subramani 2009-11-04 09:53:00

回答

1

當從主測試中,我得到NULL從

COLUMNPROPERTY(OBJECT_ID(N'db1.dbo.T_table1預期 '),' KEY_value」, 'AllowsNull' ),

但是當在要測試的數據庫上運行它時,它會按預期返回1/0。

看來,COLUMNPROPERTY運行在正在執行的數據庫。

編輯:

從主

DECLARE @RetVal TABLE(
     Val INT 
) 

INSERT INTO @RetVal (Val) EXECUTE ('USE DB1; SELECT COLUMNPROPERTY(OBJECT_ID(N''DB1.dbo.T_table1''),''Key_Value'',''AllowsNull'')') 

SELECT TOP 1 * FROM @RetVal 
+0

+1可能是object_id不包含數據庫信息 – Andomar 2009-11-04 09:08:23

0

您正在檢查NULL,但如果該字段存在,COLUMPROPERTY將返回1或0。

嘗試:

SELECT CASE COLUMNPROPERTY(OBJECT_ID(N'db1.dbo.T_table1'), 
      'KEY_value','AllowsNull') 
     WHEN 0 THEN 'Column exists and does not allow nulls' 
     WHEN 1 THEN 'Column exists and allows nulls' 
     ELSE 'Column not found' 
    END