【发布时间】:2014-04-01 07:53:10
【问题描述】:
我在sql中使用了以下存储过程:
alter procedure [dbo].[usp_Member_Org_OnGoingJobs]
(
@idUser varchar(50)
)
as
begin
declare @qry as varchar(max)
set @qry='select J.idJob,j.DateAdded,j.OpenedByWho,j.JobAddress ,j.final,j.idOrg,j.note
from Job J
inner join Users U on
U.idOrg=J.idOrg
where U.IdUser='+ @idUser+ '
and ISNULL(j.Final,'')=''
order by idJob'
execute(@qry)
end
GO
这个存储过程在sql中成功形成。
但是,当我尝试通过 asp.net c# 使用它们时,它给了我错误:
Incorrect syntax near the keyword 'order'.
一切似乎都是正确的。
请告诉我哪里出错了??
编辑:
private void BindOnGoingJobs()
{
string sqlOnGoingJobs = "usp_Member_Org_OnGoingJobs";
DataTable dtJobList = new DataTable();
ArrayList paramList = new ArrayList();
paramList.Add(new ParamData("@idUser", Convert.ToString(Session["idUser"])));
dtJobList = obj.ExecuteProcedureAndGetDataTable(sqlOnGoingJobs, paramList);
grdOnGoingJobs.DataSource = dtJobList;
grdOnGoingJobs.DataBind();
paramList.Clear();
}
public DataTable ExecuteProcedureAndGetDataTable(string procedureName, ArrayList Parameters)
{
DataTable dt = new DataTable();
try
{
if (con.State != ConnectionState.Open)
con.Open();
cmd.Connection = con;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = procedureName;
cmd.Parameters.Clear();
foreach (ParamData p in Parameters)
{
cmd.Parameters.AddWithValue(p.pName, p.pValue);
}
da.SelectCommand = cmd;
da.Fill(dt);
con.Close();
return dt;
}
catch (Exception ex)
{
con.Close();
return dt;
}
}
【问题讨论】:
-
@Steve sir 我添加了调用此存储过程的函数...使用它们来绑定网格
-
附带说明,您在存储过程中使用动态 sql 的任何特殊原因?动态 sql 看起来对你正在做的事情完全没有必要,实际上你很容易受到 sql 注入攻击。
标签: c# asp.net sql stored-procedures sql-server-2008-r2