我正在使用ado.net。如何在ado.net中执行表值函数?
我有一个函数jsp在我的数据库中需要2个参数并返回一个表。我需要提示用户输入两个参数,然后执行jsp函数并将表格打印到屏幕上。以下是我目前有:
jspCmd = new SqlCommand(jspStmt, conn);
jspCmd.CommandType = CommandType.StoredProcedure;
jspCmd.Parameters.Add("@snum", SqlDbType.VarChar, 5);
jspCmd.Parameters.Add("@pnum", SqlDbType.VarChar, 5);
jspCmd.Prepare();
Console.WriteLine();
Console.WriteLine(@"Please enter S# and P# separated by blanks, or exit to terminate");
string line = Console.ReadLine();
Regex r = new Regex("[ ]+");
string[] fields = r.Split(line);
if (fields[0] == "exit") break;
jspCmd.Parameters[0].Value = fields[0];
jspCmd.Parameters[1].Value = fields[1];
jspCmd.ExecuteNonQuery();//<---I BELIEVE ERROR COMING FROM HERE
reader = jspCmd.ExecuteReader();//PRINT TABLE TO SCREEN
while (reader.Read())
{
Console.WriteLine(reader[0].ToString() + " "
+ reader[1].ToString()
+ " " + reader[2].ToString());
}
reader.Close();
当我运行此,我输入两个参数并产生一个异常:
Program aborted: System.Data.SqlClient.SqlException (0x80131904): The request
for procedure 'jsp' failed because 'jsp' is a table valued function object.
谁能告诉我正确的方式做到这一点?
我尝试这样做,我正在得到一个新的例外。我的jspStmt =“jsp”,因为那是函数的名字。异常是:程序中止:System.Data.SqlClient.SqlException(0x80131904):无效列 名称'jsp'。 声明无法准备。 – Reeggiie
@ user3345200忘了添加圆括号 - 现在就试试吧。 –
我添加了(),它现在改为:程序异常终止:System.Data.SqlClient.SqlException(0x80131904):'jsp'不是 公认的内置函数名称。 声明无法准备。 ---- jsp位于我的数据库的过程文件夹中。任何想法为什么它会给我这个? – Reeggiie