簡體   English   中英

無法將varchar值轉換為SQL Server中存儲過程中的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#傳遞到存儲過程時,都會引發錯誤。

轉換varchar值時轉換失敗:“從PRACTICE_DETAIL選擇id,其中Practice_Name_Description = Bankson PT- Daniel(DBA);” 數據類型為int。

誰能解釋我在做什么錯?

您必須在select語句中將所選值設置為整數變量。

使用以下代碼:

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 = id from PRACTICE_DETAIL where Practice_Name_Description = @Practice_Id;
end 
GO

正如Jarvis的回答一樣,您需要為變量@prctid分配一個INT 發布語句時,由於單引號,您正在嘗試分配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

沒有引號。

id字段必須為varchar類型。 這就是為什么您收到此錯誤的原因。

您必須返回一個int值或將@prctidvarchar類型,以確保獲得正確的值。

希望這可以幫助。

謝謝你們。 它像魅力一樣運作..

我做出改變像

  DECLARE @prctid as int
  SELECT @prctid = id from PRACTICE_DETAIL where Practice_Name_Description = @Practice_Id

嘗試這個

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 + ''';'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM