Здесь много проблем, и кажется, что файл, который вы показываете, не тот, который вы используете на сервере.
Вот как создать SP и не использовать динамический SQL - это будет намного быстрее и проще в использовании:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[selectmanageregistercourse]
@iddore int,
@stateregister int,
@fish nvarchar(350)
AS
BEGIN
SELECT tblUserRegisterDore.id, tblUserRegisterDore.idcourse, tblUserRegisterDore.iddore,
tblUserRegisterDore.userid, tblUserRegisterDore.coderegister, tblUserRegisterDore.fish, tblUserRegisterDore.date,
tblUserRegisterDore.statefish, tblUserRegisterDore.stateregister, tbluser.name, tbldore.name AS namesubcourse,
tblmozedore.name AS namecourse, tbluser.family
FROM tblUserRegisterDore
INNER JOIN tblmozedore ON tblUserRegisterDore.idcourse = tblmozedore.id
INNER JOIN tbldore ON tblUserRegisterDore.iddore = tbldore.id AND tblmozedore.id = tbldore.idmozedore
INNER JOIN tbluser ON tblUserRegisterDore.userid = tbluser.userid
WHERE iddore=@iddore
AND ((@stateregister =-1) OR (stateregister=@stateregister))
AND ((@fish ='-1') OR (tblUserRegisterDore.fish=@fish))
END
Предыдущий комментарий больше не применяется, если вы используете выше
Однако здесь есть одна проблема. У вас есть varchar
, и вы не используете кавычки в динамическом sql, который вы создаете.
set @str +=' and tblUserRegisterDore.fish='+ @fish
должно быть
set @str +=' and tblUserRegisterDore.fish='''+ @fish + ''''