[英]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
值或將@prctid
為varchar
類型,以確保獲得正確的值。
希望這可以幫助。
謝謝你們。 它像魅力一樣運作..
我做出改變像
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.