C# sql中的存储过程在c中的应用#

C# sql中的存储过程在c中的应用#,c#,asp.net,sql,stored-procedures,sql-server-2008-r2,C#,Asp.net,Sql,Stored Procedures,Sql Server 2008 R2,我在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

我在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'.
一切似乎都是正确的

请告诉我哪里出了错

编辑:


只需在order by中添加表别名,我想应该可以解决这个问题


orderby J.idJob

只要在order by中添加表别名,我想应该可以解决这个问题


order by J.idJob

您需要在ISNULL检查前后将单引号加倍

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'

您需要在ISNULL检查周围使用双引号

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'

您需要像这样放置两次引号以避开引号

和ISNULL(j.Final,'''''')=''''''''''


查看这篇博文

你需要像这样引用两次来避开引号

和ISNULL(j.Final,'''''')=''''''''''


查看此博客帖子

@Steve sir我添加了调用此存储过程的函数。。。使用它们绑定网格作为旁注,您在存储过程中使用动态sql有什么特别的原因吗?动态sql看起来对您正在做的事情完全没有必要,事实上,它会让您面临sql注入攻击。@Steve sir我添加了调用此存储过程的函数。。。使用它们绑定网格作为旁注,您在存储过程中使用动态sql有什么特别的原因吗?动态sql看起来对您正在做的事情完全没有必要,事实上会让您面临sql注入攻击。您需要对
idUser
执行同样的检查,也要这样检查
where U.idUser='''+@idUser++''
您需要对
idUser
执行同样的检查,也要这样检查
where U.idUser='+@idUser+'