2013-05-15 5 views
0

서버의 예약 된 작업에서 저장 프로 시저를 실행하려고합니다. 저장 프로 시저는 쿼리를 실행하고 주식 프로그램의 손익 합계를 제공합니다.SQL Server 저장 프로 시저 작업

sqlcmd.exe를 실행하는 작업을 설정하고 아래 쿼리를 .sql 파일의 변수로 전달했습니다. 문제는 SQL에서 오류가 발생하면서 올바른 변수를 통과한다는 것을 100 % 확신하지 못한다는 것입니다.

다음은 현재 재고를 계산할 때 서버가 실행하는 작업입니다.

(@P1 int,@P2 int,@P3 bit,@P4 bit,@P5 bit) 
declare @SessionID int 
declare @Res int 
exec @Res = stk_CompileStockOnHandOnDate 
'2079-06-01', 
null, 
@P1, 
@P2, 
1, 
@P3, 
@P4, 
@P5, 
@SessionID out 
select @Res Result, @SessionID SessionID 

내가 SQLCMD 얻을 오류 메시지가

Msg 1050, Level 15, State 1, Server SERVER\SQLEXPRESS, Line 1 
This syntax is only allowed for parameterized queries. 
Msg 137, Level 15, State 2, Server SERVER\SQLEXPRESS, Line 6 
Must declare the scalar variable "@P1". 

내가 잘못 가고 위치에 어떤 아이디어인가? 좋아

답변

0

그래서 내가 올바른 매개 변수를 (대부분이 null했다) 여기

문제를 가지고 사람의 전체 쿼리입니다 relect에 통과 된 쿼리를 수정하는 데 필요한, 무슨 일이 벌어지고 있는지 발견 나와 같은 저장 프로 시저!

USE [DATABASENAME] 
GO 

DECLARE @return_value int, 
     @SessionID int 

EXEC @return_value = [dbo].[stk_CompileStockOnHandOnDate] 
     @OnDate = '2079-06-01', 
     @InSessionID = NULL, 
     @ProductTagID = NULL, 
     @StockLocationTagID = NULL, 
     @ExtendedInformation = 1, 
     @UnitCostReplacement = NULL, 
     @UnitCostAVCO = NULL, 
     @UnitCostFIFO = NULL, 
     @SessionID = @SessionID OUTPUT 

SELECT @SessionID as N'@SessionID' 

SELECT 'Return Value' = @return_value 

GO