Quantcast
Channel: Forum Getting started with SQL Server
Viewing all articles
Browse latest Browse all 7129

Error converting datatype varchar to numeric

$
0
0

Hi ,

I have a scenario Like a variable is of decimal type , and for that variable i am setting a NULL value. I am getting an error, i tried many ways like cast converstion, ISNULL but those things didnt help me,Below is my procedure, Please help me in sorting this..

                                                                                                                                                                              

CREATE PROCEDURE sptalon_MaxSpeedSave 
(          
            @ListofIDs  VARCHAR(MAX),
            @List   varchar(Max) ,
            @SearchID int     
)
AS
BEGIN
DECLARE

       @BegPrefix varchar(5),
       @BegSuffix varchar(5),
       @BMP decimal(10,3),
       @BegTrackName varchar(20),
       @BegLat decimal(15,8),
       @BegLong decimal(15,8),
       @BegEle decimal(15,8),
       @EndPrefix varchar(5),
       @EndSuffix varchar(5),
       @EndMP decimal(10,3),
       @EndTrackName varchar(20),
       @EndLat decimal(15,8),
       @EndLong decimal(15,8),
       @EndEle decimal(15,8),
       @Direction varchar(16),
       @Speed int,
       @TrainType varchar(20),
       @Description varchar(400),
       @InsertDate datetime,
       @UpdateDate datetime,
       @InsertUser varchar(50),
       @UpdateUser varchar(50),
       @UID int,
       @BegMP  decimal(10,3),
       @BegTrkName  varchar(20),
       @EMP     decimal(10,3),
       @EndTrkName  varchar(20),
       @BeginMilepost decimal(10,3),
       @EndMilepost decimal(10,3),
       @BTrackName varchar(20),
       @ETrackName varchar(20)



 IF OBJECT_ID ('tempdb..#Max_Test') IS NOT NULL
            BEGIN
                  DROP TABLE #Max_Test
            END--IF
            CREATE TABLE #Max_Test
                (            
                  Value varchar(MAX) ,
                  ID int IDENTITY PRIMARY KEY,
                 )
            INSERT INTO #Max_Test
            Select * from Split (@ListofIDs,',' )
            select * from #Max_Test

 IF OBJECT_ID ('dbo.tbl_Trackname') IS NOT NULL
            BEGIN
                  DROP TABLE tbl_Trackname
            END--IF
            CREATE TABLE tbl_Trackname
                (            
                  TrackNames varchar(MAX) ,
                  ID int IDENTITY PRIMARY KEY,
                 )
            INSERT INTO tbl_Trackname
              Select * from Split (@List,',' )

--select * from #Max_Test 
--Select * from #tbl_Trackname 

 SET @BegPrefix = (SELECT value FROM #Max_Test where id=1)


 SET @BegSuffix = (SELECT value FROM #Max_Test where id=2)


 SET @BMP = (SELECT value FROM #Max_Test where id=3)
 SET @BegTrackName = (SELECT value FROM #Max_Test where id=4)

 SET @BegLat = (SELECT value FROM #Max_Test where id=5)

SET @BegLong = (SELECT value FROM #Max_Test where id=6)

SET @BegEle = (SELECT value FROM #Max_Test where id=7)


 SET @EndPrefix = (SELECT value FROM #Max_Test where id=8)


 SET @EndSuffix = (SELECT value FROM #Max_Test where id=9)

 SET @EMP = (SELECT value FROM #Max_Test where id=10)

  SET @EndTrackName = (SELECT value FROM #Max_Test where id=11)

  SET @EndLat = (SELECT value FROM #Max_Test where id=12)


 SET @EndLong = ISNULL((SELECT value FROM #Max_Test where id=13),0)


 SET @EndEle = ISNULL((SELECT value FROM #Max_Test where id=14),0)


SET @Direction = (SELECT value FROM #Max_Test where id=15)
SET @Speed = (SELECT value FROM #Max_Test where id=16)
SET @TrainType = (SELECT value FROM #Max_Test where id=17)
SET @Description = (SELECT value FROM #Max_Test where id=18)
SET @InsertUser = (SELECT value FROM #Max_Test where id=19)
SET @UID = (SELECT value FROM #Max_Test where id=20)  


--Select * from SSDB_Maximumpermissiblespeed
IF @BegTrackName <> @EndTrackName
BEGIN
 INSERT INTO ErrorLog_Asset(
-- Point,
ErrorCode,
ErrorMessage,
MilepostPrefix,
MilePost,
TableName    )

SELECT      -- B.Point 
'15'
,'Begin TrackNames and End TrackNames are not matching'
,@BegPrefix
,@BMP
,'MaximumPermissibleSpeed'



END



IF (Select COUNT(*) from  tbl_Trackname)>=1
BEGIN
     IF @BegTrackName IS NULL OR @EndTrackName IS NULL OR @BMP IS NULL OR @EMP IS NULL
     BEGIN

IF (CURSOR_STATUS('global','C_Max')) >= -1 
BEGIN 
DEALLOCATE C_Max 
END

DECLARE C_Max CURSOR FOR



with cte as (Select Replace(tracknames,'.','#')tracknames from tbl_Trackname)

     Select Replace(Parsename(Replace(Parsename(Replace(Tracknames,' to ','.'),2),'_','.'),2),'#','.') 'BegMP',
Replace(Parsename(Replace(Parsename(Replace(Tracknames,' to ','.'),2),'_','.'),1),'#','.') 'BegTrkName',
Replace(Parsename(Replace(Parsename(Replace(Tracknames,' to ','.'),1),'_','.'),2),'#','.') 'EndMP',
Replace(Parsename(Replace(Parsename(Replace(Tracknames,' to ','.'),1),'_','.'),1),'#','.') 'EndTrkName'

From cte
--select * from tbl_trackname
   OPEN  C_Max
FETCH FROM C_Max INTO @BegMP,@BegtrkName,@EndMP,@EndTrkName

WHILE(@@FETCH_STATUS=0)
BEGIN --- cur beg

  Declare C_Max1 Cursor FOR

 SELECT Beginmilepost,BeginTrackName,Endmilepost,EndTrackName
 FROM SSDB_TrackSegment WHERE BeginMilepost>=@BegMP AND EndMilepost<=@EndMP  AND SearchID = @SearchID


 Open C_Max1
  FETCH FROM C_MAX1 INTO @BeginMilepost,@BTrackName,@EndMilepost,@ETrackName

WHILE(@@FETCH_STATUS=0)
BEGIN
                      INSERT INTO SSDB_MaximumPermissibleSpeed
(
BeginMilepostPrefix,
BeginMilepostSuffix,
BeginMilepost,
BeginTrackName,
BeginLatitude,
BeginLongitude,
BeginElevation,
EndMilepostPrefix,
EndMilepostSuffix,
EndMilepost,
EndTrackName,
EndLatitude,
EndLongitude,
EndElevation,
Direction,
Speed,
TrainType,
Description,
InsertUser,
S_ID
)

                                                 SELECT
  @BegPrefix ,
  @BegSuffix ,
  @BeginMilepost ,
  @BTrackName  ,
  @BegLat,
  @BegLong ,
  @BegEle ,
  @EndPrefix ,
  @EndSuffix ,
  @EndMilepost ,
  @ETrackName  ,
  @EndLat ,
  @EndLong ,
  @EndEle ,
  @Direction ,
  @Speed ,
  @TrainType ,
  @Description ,
  @InsertUser ,
  @UID     



FETCH FROM C_MAX1 INTO @BeginMilepost,@BTrackName,@EndMilepost,@ETrackName
END----cur end
         close C_Max1
       Deallocate C_Max1


    FETCH FROM C_Max INTO @BegMP,@BegtrkName,@EndMP,@EndTrkName


END----Cur End
CLOSE C_Max
    DEALLOCATE C_Max      
END
END
 ELSE
      BEGIN
               INSERT INTO SSDB_MaximumPermissibleSpeed
(
BeginMilepostPrefix,
BeginMilepostSuffix,
BeginMilepost,
BeginTrackName,
BeginLatitude,
BeginLongitude,
BeginElevation,
EndMilepostPrefix,
EndMilepostSuffix,
EndMilepost,
EndTrackName,
EndLatitude,
EndLongitude,
EndElevation,
Direction,
Speed,
TrainType,
Description,
InsertUser,
S_ID
)


                                           SELECT 
                                      @BegPrefix ,
  @BegSuffix ,
  @BMP  ,
  @BegTrackName   ,
  @BegLat ,
  @BegLong ,
  @BegEle ,
  @EndPrefix ,
  @EndSuffix ,
  @EMP ,
  @EndTrackName  ,
  ISNULL(@EndLat,0.0) ,
  @EndLong ,
  @EndEle ,
  @Direction ,
  @Speed ,
  @TrainType ,
  @Description ,
  @InsertUser ,
  @UID     


     END


END

--EXEC sptalon_MaxSpeedSave 'P,P,null,null,NULL,-74.2144756,-66.45722235,P,P,null,null,-47.2485,-47.258,-78.147896,Increasing,50,Freight,MAxSpeed,SA,14',
--'100_Main1 to 120_Main1',1

I am passing NULL values to BegLat,BMP i am getting error.


Deepa


Viewing all articles
Browse latest Browse all 7129

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>