2011-05-31 49 views
0
[SqlProcedure()] 
public static void GetCustInfo(SqlString PhoneNo, out SqlString CustInfo) 
{ 
    // code... 
} 

這是我嘗試創建功能:問題在SQL Server中創建.NET程序集功能

CREATE FUNCTION [dbo].[GetCustInfo] (@PhoneNo nvarchar(50)) 
RETURNS nvarchar(max) WITH EXECUTE AS CALLER 
AS EXTERNAL NAME CustFromPhone.[ManagedCodeAndSQLServer.BaseFunctionClass].GetCustInfo 

,這是錯誤:

CREATE FUNCTION failed because T-SQL and CLR types for return value do not match.

+0

你的權利...看下面的評論是我的錯誤是什麼。 – Ezi 2011-05-31 20:33:55

回答

3

即使你問很好...一個void函數不會返回可以轉換爲nvarchar的東西

+0

我讀過,SQL過程的不能有一個返回值。 (也許這隻適用於vb.net?) – Ezi 2011-05-31 20:32:56

+1

你正在混淆一些概念。保持簡單:函數返回一些東西......程序不會。那就是當你談論功能或程序的理論概念的時候。當涉及到日常語言時,很多人(包括我)傾向於將所有功能都稱爲功能,或者將這兩個術語互換使用。確切地說,不存在無效函數......如果你有一個'void foo()',那永遠是一個過程,但通常你不必擔心它。在這種情況下,它很簡單...你的SQL函數說它返回一個nvarchar(max)...你的GetCustInfo(...)什麼都沒有返回 – DarkSquirrel42 2011-05-31 21:46:49

+0

感謝你抽出時間向我解釋它。 – Ezi 2011-05-31 21:58:51

1

也許試試這個:

[SqlProcedure()] 
public static SqlString GetCustInfo(SqlString PhoneNo) 
{ 
    // code... 
}