我正在编写一个部署在sql Server 2008 R2(所以.Net 3.5)上的C#存储过程,并且想声明一个可选参数作为可空的guid.这是我先试过的
[Microsoft.sqlServer.Server.sqlProcedure] public static void spCalcPerc( sqlGuid pID,sqlGuid sID = DBNull.Value )
这与编译时错误失败:
Default parameter value for ‘sID’ must be a compile-time constant
这是因为DBNull.Value不是一个常数,这是一个痛苦.
所以我尝试将声明更改为:
[Microsoft.sqlServer.Server.sqlProcedure] public static void spCalcPerc( sqlGuid pID,Guid? sID = null )
这个编译,但现在我得到这个部署错误:
Deploy error : Could not create a type for parameter System.Nullable
试:
,sqlGuid sID = null
给这个编译时错误:
A value of type ‘< null >’ cannot be used as a default parameter because there are no standard conversions to type
‘System.Data.sqlTypes.sqlGuid’
所以感觉比较卡住我诉诸于此:
,sqlGuid sID = "00000000-0000-0000-0000-000000000000"
我不想做代码中的字符串测试,就像一个kludge.但是,我不会收到这个编译错误:
A value of type ‘string’ cannot be used as a default parameter because there are no standard conversions to type ‘System.Guid’
Gah,4种不同的方法,没有一种工作.叹
请感谢您的想法或推动正确的方向.