[SQL ]MS SQL 預存程序參數問題

看板Database (資料庫)作者 (michaeljoking)時間11年前 (2014/05/19 17:23), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串1/1
(針對 SQL 語言的問題,用這個標題。請用 Ctrl+Y 砍掉這行) 資料庫名稱:MS SQL Server 資料庫版本:2008 內容/問題描述:MS SQL 預存程序參數問題 練習書上的範例發現在MS SQL 2008預存程序有問題 1、程序需要輸入3個參數:PaperID 數字、Type 文字(單選題、複選題、是非題、填充題 、問答題)、UserID 2、UserID 試過 12345(數字-->轉換成資料類型 int 時轉換失敗) 和 test(文字-->無效 的資料行名稱 test)都出現錯誤,可是UserID有可能是這2種型態 3、單獨下SQL又可以正確執行 select * from UserAnswermr,SingleProblemmr where [Type]='單選題' and UserAnswermr.TitleID=SingleProblemmr.ID and [PaperID]='116' and [UserID]= 'test' 請問先進,以下這個預存程序錯在哪裡?該如何修正?謝謝。 CREATE PROCEDURE [dbo].[Proc_UserAnswermr] (@PaperIDint, @Typevarchar(10), @UserID varchar(50)) AS begin declare @sql nvarchar(1000) if @Type='單選題' begin set @sql='select * from UserAnswermr,SingleProblemmr where [Type]=''單選題'' and UserAnswermr.TitleID=SingleProblemmr.ID and [PaperID]= ' +Cast(@PaperID AS varchar(10)) + ' and [UserID]= ' + @UserID exec sp_executesql @sql end else if @Type='複選題' begin set @sql='select * from UserAnswermr,MultiProblemmr where [Type]=''複選題'' and UserAnswermr.TitleID=MultiProblemmr.ID and [PaperID]= ' +Cast(@PaperID AS varchar(10)) + ' and [UserID]= ' + @UserID exec sp_executesql @sql end else if @Type='是非題' begin set @sql='select * from UserAnswermr,JudgeProblemmr where [Type]=''是非題'' and UserAnswermr.TitleID=JudgeProblemmr.ID and [PaperID]= ' +Cast(@PaperID AS varchar(10)) + ' and [UserID]= ' + @UserID exec sp_executesql @sql end end(因為字數限制截短了) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 192.192.47.247 ※ 文章網址: http://www.ptt.cc/bbs/Database/M.1400491417.A.BE2.html

05/24 08:57, , 1F
[UserID]= ''' + @UserID + ''''
05/24 08:57, 1F
文章代碼(AID): #1JUSsPlY (Database)
文章代碼(AID): #1JUSsPlY (Database)