【发布时间】:2014-09-25 14:40:42
【问题描述】:
我有一个问题。请帮忙解决我的问题
我有一个 SQL 函数
function [dbo].[fnKudishikaAmt]
(@ParishName nvarchar(100), @Hno int, @dateto datetime = Null)
Returns Decimal(15,2)
此函数使用执行命令显示正确的结果
Select dbo.fnKudishikaAmt('St.George Malankara Catholic Church', 29, default)
我的要求是这个函数应该从C#调用
我收到了错误
从字符串转换日期时间时转换失败
代码:
public double kudishikatotal(string ParishName, Int32 HouseNo)
{
String SQLText = "select ChurchDB.dbo.fnKudishikaAmt(@ParishName, @Hno, @dateto) as fnresult";
SqlCommand cmd = new SqlCommand(SQLText);
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@ParishName", ParishName);
cmd.Parameters.AddWithValue("@Hno", HouseNo);
cmd.Parameters.AddWithValue("@dateto", "default");
string rval = GetSingleValue(cmd);
double kudiamt = 0;
if (rval != null)
{
kudiamt = Convert.ToDouble(rval);
}
return kudiamt;
}
private static string GetSingleValue(SqlCommand cmd)
{
string ConString = connectionstring();
string returnvalue = "";
using (SqlConnection con = new SqlConnection(ConString))
{
cmd.Connection = con;
con.Open();
returnvalue = cmd.ExecuteScalar().ToString();
con.Close();
}
return returnvalue;
}
【问题讨论】:
-
根本不要传递那个参数。甚至不要将其添加到参数集合中
-
与stackoverflow.com/questions/8358315/… 相同...但您应该显示您的函数定义。第二个参数是可为空的 DateTime 类型吗?
-
如果我没有包含日期参数,我会收到错误说明:在执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。异常详细信息:System.Data.SqlClient.SqlException:必须声明标量变量“@dateto”。
标签: c# sql sql-server