dhage.prashant01 Ответов: 4

Процедура ожидает параметр '@handle' типа 'int'.


Здравствуйте Друзья,
Я пытаюсь выполнить динамический запрос с помощью
EXEC SP_EXECUTE


но это дает ошибку говоря:
Procedure expects parameter '@handle' of type 'int'.

Вот моя процедура
ALTER proc [dbo].[sp_StudioReleaseChallan_sel]  
(
	@Criteria nvarchar(4000)='', 
	@startRowIndex  int=0,    
	@maximumRows  int=0  )  
as  
begin  
set nocount on;  
DECLARE @SQL NVARCHAR(MAX)
IF LEN(@Criteria) <> 0
BEGIN
	SET @Criteria = ' AND ' + @Criteria
END

SET @SQL = 'select A.iterationid [jobid], jobno,firstname+'' ''+lastname [User],clientname,projectname,brandname,awcategoryname,  
 ''Studio Master'' [JobType]  
,variantname,quantity+'' ''+unit [SKU],iterationdate [StartTime],expecteddeleverydate,statusname  
,artworktype,A.statusid from tbl_iteration A  
inner join tbl_user U on U.userid=A.userid  
inner join tbl_client C on C.clientid = A.clientid  
inner join tbl_project P on P.projectid = A.projectid  
inner join tbl_brand B on B.brandid = A.brandid  
inner join tbl_awcategory AW on AW.awcategoryid=A.artworkcategoryid  
inner join tbl_variant V on V.variantid = A.variantid  
inner join tbl_sku on tbl_sku.skuid=A.skuid  
inner join tbl_status S on S.statusid = A.statusid  
where artworktype = 9 and A.statusid not in (30,45,49) '+ @CRITERIA + ' 
order by jobno desc'  

EXEC SP_EXECUTE @SQL
end


Может ли кто-нибудь сказать, что означает эта ошибка

Заранее спасибо

Kiran Sonawane

Обеспечить нам порядок
Это может вам помочь
http://forums.asp.net/t/1454533.aspx/1

dhage.prashant01

Я добавил эту процедуру в свой вопрос

dhage.prashant01

его работа я использовал
процедуры sp_executesql вместо sp_execute

4 Ответов

Рейтинг:
34

R. Giskard Reventlov

Видеть здесь[^].

Вы, вероятно, должны использовать:

exec sp_executesql MyProc


Рейтинг:
2

HemantBPatil

Привет,

Вам нужно использовать exec SP_EXECUTESQL @sql. Так как вы пытаетесь выполнить динамический запрос. sp_executesql-это встроенная хранимая процедура, предоставленная моим microsoft, которая принимает запрос в строковом формате и выполняет его в отношении базы данных.



Существует два различных способа выполнения динамического запроса.

1) без использования встроенной процедуры хранения


exec (@sql)


2) Использование хранимой процедуры

exec SP_EXECUTESQL @sql


Рейтинг:
0

#realJSOP

Вы можете сделать это:

exec(@sql)


или вот это:

exec sp_executesql @sql


phil.o

Вниз-голосование отменяется. 8 лет спустя, наконец :большой палец вверх:

Рейтинг:
0

LaxmikantYadav

Дорогой Прашант,

Пожалуйста, проверьте синтаксис sp_executesql. ниже приведен пример получения количества строк из таблицы с помощью динамического запроса


DECLARE @SQLString nvarchar(500);
DECLARE @CountSQLQuery varchar(30);
DECLARE @CountResult varchar(30);

SET @SQLString = N'SELECT @result = COUNT(*) FROM TableName'
	
EXECUTE sp_executesql @SQLString, N'@result varchar(30) OUTPUT',@result=@CountSQLQuery OUTPUT;