存储过程:
dbo.GetLDate
select DateEntered from Table1 where Id = 4, Gid=5
结果:
Executed Successfully
要验证的新查询:
DECLARE @LDate datetime
EXEC @LDate = GetLDate 4,5
结果:
DateEntered
2014-02-13 06:21:43.600
因此,工作正常
创建了最终存储过程:
EXEC @LDate = GetLDate 4,5
Select 1
在C#中
int? id = _database.ExecuteScalar() as int?;
这里,每次我只获得空值。但我选择1仍然我得到空值。可能是什么原因。
答案 0 :(得分:5)
您正在选择字符串'1'
,并且无法使用int?
将其转换为cast
。因此你变得空了。
使用:
SELECT 1 --without single quotes
或者您可以使用Convert.ToInt32
之类的:
int? id = Convert.ToInt32(_database.ExecuteScalar());
考虑以下示例:
object obj = "1";
int? id = obj as int?;
从null
(字符串)转换为"1"
后,您将返回int/int?
将失败。