2015-04-23 49 views
1

我有这个存储过程无法转换为varchar值在存储过程中诠释在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#传递值存储过程就抛出错误。转换将varchar值 '从 PRACTICE_DETAIL其中Practice_Name_Description = Bankson PT-丹尼尔 (DBA)选择ID;' 时

转换失败到数据类型int。

任何人都可以解释我做错了什么?

+0

变化听起来像是'id'是'VARCHAR'。该列被定义为什么数据类型? – Tim

+0

没有我的Id列是Int只有 –

+0

那么你为什么要尝试给它分配一个'VARCHAR'? ''从PRACTICE_DETAIL中选择ID,其中Practice_Nanme_Description ='+ @Practice_Id +';''是'VARCHAR',而不是SQL语句。 – Tim

回答

1

试试这个

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 
+0

感谢它工作正常。现在。我做了一些数据类型的改变,并使用你的选择查询。 –

+0

欢迎伴侣:) – Hitesh

0

id字段必须是varchar。这就是你收到这个错误的原因。

您必须返回int值或使@prctidvarchar类型以确保您获得正确的值。

希望这会有所帮助。

+0

我的Id列仅为int。但为了测试,我将它更改为varchar,但仍然出现错误。 –

+0

用这个替换你当前的查询条件:'Practice_Name_Description = @ Practice_Id' –

-1

试试这个

DECLARE @prctid as varchar(max) 

SELECT @prctid = "select id from PRACTICE_DETAIL where Practice_Name_Description = '" + @Practice_Id + "';" 
-1

缺少单引号。 试试这个。

SELECT @prctid = 'select id from PRACTICE_DETAIL where Practice_Name_Description = ''' + @Practice_Id + ''';' 
2

您必须在select语句中将选定值设置为整数变量。

使用下面的代码: -

SELECT @prctid = id from PRACTICE_DETAIL where Practice_Name_Description = @Practice_Id 
1

由于贾维斯放在自己的答案,你需要一个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 

无报价。

0

谢谢大家。它的工作就像一个魅力..

我做出这样

DECLARE @prctid as int 
    SELECT @prctid = id from PRACTICE_DETAIL where Practice_Name_Description = @Practice_Id 
相关问题