2011-03-15 74 views
0

我在MSSQL中創建了一個返回VARCHAR(MAX)的標量值函數。標量值函數在C++ ADO(不是.NET)中返回VARCHAR(MAX)

我使用充滿了該函數的參數CommandPtr(PRECOM),和我打電話通過以下調用該函數:

_variant_t vNull; 
vNull.vt = VT_ERROR; 
vNull.scode = DISP_E_PARAMNOTFOUND; 
HRESULT hr = ptrCom->raw_Execute(&vNull, &vNull, adCmdStoredProc, &record_set); 

返回HRESULT是DB_E_ERRORSINCOMMAND。

如果我將返回的值從VARCHAR(MAX)更改爲VARCHAR(8000),一切正常。

有沒有人有任何想法如何執行返回VARCHAR(MAX)的標量值函數?

謝謝!

回答

0

Updating an Application to SQL Server Native Client from MDAC

當MDAC應用程序連接到SQL Server,SQL Server 2005中引入的數據類型,會出現與SQL Server 2000兼容的數據類型,如圖所示下表。

SQL Server 2005 type SQL Server 2000 type 
varchar(max)   text 

所以我想如果你可以指定text,它可能工作。

+0

嘿,感謝您的幫助:-) 當我試圖設置文本爲返回的數據類型,我從SQL收到此錯誤: 「文本數據類型是返回值無效。」 :-( – TCS 2011-03-15 17:15:41

+0

@strDisplayName - 那麼我認爲你必須從ADO中繼續,它不能理解'varchar(max)'。現代編程接口是SQL Native Client,我已經很方便地提供了一個鏈接到文檔: - | – 2011-03-15 18:45:57

+0

感謝您的幫助:-) – TCS 2011-03-15 22:20:46