无法在 SQL 服务器的存储过程中将 varchar 值转换为 int
Cannot convert varchar value to int in stored procedure in SQL Server
我有这个存储过程
create procedure [dbo].[CreateNewTicket]
(@Practice_Id as varchar(40),
)
/* insert some rows into TICKET table */
As Begin
DECLARE @prctid as int
SELECT @prctid = 'select id from PRACTICE_DETAIL where Practice_Name_Description = ' + @Practice_Id + ';'
end
GO
但是每当我将值从我的 C# 传递到存储过程时,它就会抛出错误。
Conversion failed when converting the varchar value 'select id from
PRACTICE_DETAIL where Practice_Name_Description = Bankson PT- Daniel
(DBA);' to data type int.
谁能解释一下我做错了什么?
id
字段必须是 varchar
类型。这就是您收到此错误的原因。
您必须 return 一个 int
值或将 @prctid
设为 varchar
类型以确保您获得正确的值。
希望对您有所帮助。
试试这个
create procedure [dbo].[CreateNewTicket]
(
@Practice_Id as varchar(40),
)
/* insert some rows into TICKET table */
As Begin
DECLARE @prctid as int
SELECT @prctid = id from PRACTICE_DETAIL where Practice_Name_Description = @Practice_Id;
end
GO
试试这个
DECLARE @prctid as varchar(max)
SELECT @prctid = "select id from PRACTICE_DETAIL where Practice_Name_Description = '" + @Practice_Id + "';"
缺少单引号。
试试这个。
SELECT @prctid = 'select id from PRACTICE_DETAIL where Practice_Name_Description = ''' + @Practice_Id + ''';'
您必须在 select 语句中将 selected 值设置为整型变量。
使用以下代码:-
SELECT @prctid = id from PRACTICE_DETAIL where Practice_Name_Description = @Practice_Id
正如 Jarvis 在他的回答中所说,您需要将 INT
分配给变量 @prctid
。在发布声明时,由于单引号,您正在尝试分配 VARCHAR
:
'select id from PRACTICE_DETAIL where Practice_Name_Description = ' + @Practice_Id + ';'
这将导致 VARCHAR
,因此出现错误。
您要找的是:
SELECT @prctid = select id from PRACTICE_DETAIL where Practice_Name_Description = @Practice_Id
没有引号。
谢谢大家。它就像一个魅力..
我做了这样的改变
DECLARE @prctid as int
SELECT @prctid = id from PRACTICE_DETAIL where Practice_Name_Description = @Practice_Id
我有这个存储过程
create procedure [dbo].[CreateNewTicket]
(@Practice_Id as varchar(40),
)
/* insert some rows into TICKET table */
As Begin
DECLARE @prctid as int
SELECT @prctid = 'select id from PRACTICE_DETAIL where Practice_Name_Description = ' + @Practice_Id + ';'
end
GO
但是每当我将值从我的 C# 传递到存储过程时,它就会抛出错误。
Conversion failed when converting the varchar value 'select id from PRACTICE_DETAIL where Practice_Name_Description = Bankson PT- Daniel (DBA);' to data type int.
谁能解释一下我做错了什么?
id
字段必须是 varchar
类型。这就是您收到此错误的原因。
您必须 return 一个 int
值或将 @prctid
设为 varchar
类型以确保您获得正确的值。
希望对您有所帮助。
试试这个
create procedure [dbo].[CreateNewTicket]
(
@Practice_Id as varchar(40),
)
/* insert some rows into TICKET table */
As Begin
DECLARE @prctid as int
SELECT @prctid = id from PRACTICE_DETAIL where Practice_Name_Description = @Practice_Id;
end
GO
试试这个
DECLARE @prctid as varchar(max)
SELECT @prctid = "select id from PRACTICE_DETAIL where Practice_Name_Description = '" + @Practice_Id + "';"
缺少单引号。 试试这个。
SELECT @prctid = 'select id from PRACTICE_DETAIL where Practice_Name_Description = ''' + @Practice_Id + ''';'
您必须在 select 语句中将 selected 值设置为整型变量。
使用以下代码:-
SELECT @prctid = id from PRACTICE_DETAIL where Practice_Name_Description = @Practice_Id
正如 Jarvis 在他的回答中所说,您需要将 INT
分配给变量 @prctid
。在发布声明时,由于单引号,您正在尝试分配 VARCHAR
:
'select id from PRACTICE_DETAIL where Practice_Name_Description = ' + @Practice_Id + ';'
这将导致 VARCHAR
,因此出现错误。
您要找的是:
SELECT @prctid = select id from PRACTICE_DETAIL where Practice_Name_Description = @Practice_Id
没有引号。
谢谢大家。它就像一个魅力..
我做了这样的改变
DECLARE @prctid as int
SELECT @prctid = id from PRACTICE_DETAIL where Practice_Name_Description = @Practice_Id