Solved

Conversion failed when converting the varchar value to data type int.

Posted on 2009-04-01
4
360 Views
Last Modified: 2012-05-06
I have a web application that defines the list of order numbers that I want to update in a DB. This list of order numbers (which is defined as int in the DB) is collected in a string. I would like to pass the value of this string to the sql parameter to update the DB, but when I run it I get the error message: "Conversion failed when converting the varchar value ''44','45'' to data type int."

This code below represents the situation:
declare @OrderSelection varchar(max)
set @OrderSelection = '''44'',''45'''
update SY1_OrderDetail set OrderLineStatus = 1
where orderNumber in (@OrderSelection)

Please, could you help me to solve the problem?
declare @OrderSelection varchar(max)
set @OrderSelection = '''44'',''45'''
update SY1_OrderDetail set OrderLineStatus = 1
where orderNumber in (@OrderSelection)

Open in new window

0
Comment
Question by:EdsSystem
  • 2
4 Comments
 
LVL 37

Expert Comment

by:momi_sabag
ID: 24040263
that won't work
is this a one time thing or do you need to run this in a  procedure>?
0
 

Author Comment

by:EdsSystem
ID: 24040294
I will use it in a procedure.
0
 
LVL 39

Accepted Solution

by:
BrandonGalderisi earned 500 total points
ID: 24040316
You have to put it in dynamic SQL in order to pass @OrderSelection in like that.  Or, use a UDF to split the @OrderSelection into a table and join to it or us in/exists.

Here's the function I wrote to do it:
http://sqlservernation.com/blogs/howtos/archive/2009/03/07/converting-a-delimited-string-into-a-table.aspx



--with dynamic sql
declare @OrderSelection varchar(max)
set @OrderSelection = '44,45'
 
exec('update SY1_OrderDetail set OrderLineStatus = 1 where orderNumber in (' + @OrderSelection + ')')
 
 
--with function 1
declare @OrderSelection varchar(max)
set @OrderSelection = '44,45'
 
update SY1_OrderDetail set OrderLineStatus = 1 where orderNumber in
(select cast(theValue as int) from dbo.fn_delimitedToString(@OrderSelection,','))
 
--with function 2
declare @OrderSelection varchar(max)
set @OrderSelection = '44,45'
 
update sy 
set OrderLineStatus = 1 
from SY1_OrderDetail sy
where exists
(select 1 from dbo.fn_delimitedToString(@OrderSelection,',') where cast(theValue as int) = sy.OrderNumber)

Open in new window

0
 

Author Closing Comment

by:EdsSystem
ID: 31565353
Thanks a lot for your prompt response!!!
0

Featured Post

PRTG Network Monitor: Intuitive Network Monitoring

Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Abstract Express Replacement Software 12 28
How to share SSIS Package? 6 37
Find results from sql within a time span 11 32
SQL Count issue 24 16
Slowly Changing Dimension Transformation component in data task flow is very useful for us to manage and control how data changes in SSIS.
International Data Corporation (IDC) prognosticates that before the current the year gets over disbursing on IT framework products to be sent in cloud environs will be $37.1B.
This video shows, step by step, how to configure Oracle Heterogeneous Services via the Generic Gateway Agent in order to make a connection from an Oracle session and access a remote SQL Server database table.
Viewers will learn how to use the INSERT statement to insert data into their tables. It will also introduce the NULL statement, to show them what happens when no value is giving for any given column.

809 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question