Click here to Skip to main content
15,899,474 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
data not coming from the database while using the cursor query...

error at


SET @SPRICE=(SELECT RATE FROM MT_PSL_CUSTTDRATES_ITEM WHERE FROMDATE<=@TDATE AND
TODATE >=@TDATE AND
CCODE=@CCODE AND BCODE=@BCODE)

What I have tried:

here my procedure
__________________

ALTER PROCEDURE [dbo].[SDSUSPPSL_CUSTTDRATES_ITEM]
(
@MODE INT=4, -- 1 FOR INSERT, 2 FOR UPDATE, 3 FOR SELECT SPECIFIC, 4 FOR SELECT ALL, 5 FOR DELETE SPECIFIC, 6 FOR DELETE ALL
@SLNO NUMERIC(18,0) = NULL,
@CCODE INT = NULL,
@BCODE INT = NULL,
@ICODE INT=NULL,
@RATE NUMERIC(18,4) = NULL,
@LEAKS NUMERIC(18,2) = NULL,
@CRDATE DATETIME = NULL,
@CREATEDBY VARCHAR(50)=NULL,
@FROMDATE DATETIME=NULL,
@TODATE DATETIME=NULL,
@TDATE DATETIME=NULL,
@OUTPUT NUMERIC(18,2)=NULL OUTPUT


)
AS
DECLARE @RESULT INT

DECLARE @ITEMID INT
DECLARE @ITEMNAME VARCHAR(50)
DECLARE @SPRICE NUMERIC(18,2)



SET @RESULT=0

IF @MODE=11
BEGIN

DECLARE @TMP_ITEMS2 TABLE(
ITEMID INT,
ITEMNAME VARCHAR(50),
SPRICE NUMERIC(18,2),
ORDERNO INT
);
DECLARE CUR_ITEMS CURSOR FOR SELECT ITEMID,ITEMNAME,SPRICE
FROM MT_PSL_ITEMS M
OPEN CUR_ITEMS
FETCH NEXT FROM CUR_ITEMS INTO @ITEMID,@ITEMNAME,@SPRICE
WHILE @@FETCH_STATUS=0
BEGIN
SET @SPRICE=(SELECT RATE FROM MT_PSL_CUSTTDRATES_ITEM WHERE FROMDATE<=@TDATE AND
TODATE >=@TDATE AND
CCODE=@CCODE AND BCODE=@BCODE)

if(@sprice>0)
INSERT INTO @TMP_ITEMS2 SELECT @ITEMID,@ITEMNAME,@SPRICE,ORDERNO
FROM MT_PSL_ITEMS M
WHERE ITEMID=@ITEMID
FETCH NEXT FROM CUR_ITEMS INTO @ITEMID,@ITEMNAME,@SPRICE
END
CLOSE CUR_ITEMS
DEALLOCATE CUR_ITEMS
SELECT T.ITEMID,T.ITEMNAME,T.SPRICE RATE,ORDERNO
FROM @TMP_ITEMS2 T
ORDER BY ORDERNO
END
SELECT @RESULT
Posted
Updated 24-Jul-16 21:06pm
Comments
RossMW 25-Jul-16 2:35am    
this sounds like a select statement is returning multiple values when it is only expecting one only. Check these and your data. Particularly on any = statement that are returning arrays

Manually run each statement with the variable you are running it with.

1 solution

Hello ,
The error comes due to multiple values return from below query
SQL
SELECT RATE FROM MT_PSL_CUSTTDRATES_ITEM WHERE FROMDATE<=@TDATE AND
TODATE >=@TDATE AND
CCODE=@CCODE AND BCODE=@BCODE


It can't assign multiple values in a single record.To avoid the error , you may select single record by using Top key word .
Try
SQL
SELECT Top 1 RATE FROM MT_PSL_CUSTTDRATES_ITEM WHERE FROMDATE<=@TDATE AND
TODATE >=@TDATE AND
CCODE=@CCODE AND BCODE=@BCODE

Thanks
 
Share this answer
 
Comments
Member 12306844 25-Jul-16 3:21am    
thank you.
Animesh Datta 25-Jul-16 3:25am    
Glad to help you .
If your problem is solved then close the discussion by accepting the answer.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900