SQL数据库里面显示在将 varchar 值 'S' 转换成数据类型 int 时失败。 下面是存储过程 麻烦看下 是不是有错

USE [dbHrm41All_ys]
GO
/****** Object: StoredProcedure [dbo].[Tra_Report_pEvalCourse] Script Date: 11/10/2011 11:09:16 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[Tra_Report_pEvalCourse]
@BeginDate [varchar](32),
@EndDate [varchar](32),
@iStyle [varchar](32)
AS
CREATE TABLE #ResultTb
(
InfoID VARCHAR(32),
ClassID VARCHAR(32),
ClassCode VARCHAR(1024),
ClassName VARCHAR(1024),
CourseID VARCHAR(32),
CourseName VARCHAR(1024),
TeacherID VARCHAR(32),
TeacherName VARCHAR(1024),
TraAddress VARCHAR(1024),
OrganName VARCHAR(1024),
BeginDate DATETIME,
EndDate DATETIME,
LastAvgScore DECIMAL(18,4),
FinalImpressionID VARCHAR(32),
FinalImpressionName VARCHAR(1024),
FinalImpressionNumb INT,
)
INSERT INTO #ResultTb(InfoID,ClassID,ClassCode,ClassName,CourseID,CourseName,TeacherID,TeacherName,TraAddress,OrganName,BeginDate,EndDate,LastAvgScore,FinalImpressionID,FinalImpressionName)
SELECT A.InfoID, A.ClassID, A.ClassCode, A.ClassName, A.CourseID,A.CourseName, A.TeacherID, A.TeacherName,
A.TraAddress ,A.OrganName, A.BeginDate, A.EndDate, (CASE A.LastAvgScore WHEN '-9999.0000' THEN '0' ELSE A.LastAvgScore END), B.vID, B.vName
FROM Tra_Eval_tCourseInfo AS A
CROSS JOIN Dic_vFinalImpression AS B
WHERE A.EvalDate BETWEEN @BeginDate AND @EndDate
UPDATE #ResultTb SET FinalImpressionNumb = ISNULL((SELECT COUNT(1)
FROM Tra_Eval_tCourseStudent
WHERE InfoID = #ResultTb.InfoID
AND FinalImpressionID = #ResultTb.FinalImpressionID
),'0')
IF @iStyle = '0'
BEGIN
SELECT InfoID, ClassID, ClassCode, ClassName, CourseID, CourseName, TeacherID, TeacherName, TraAddress,
OrganName, CONVERT(VARCHAR(10),BeginDate,120) AS BeginDate, CONVERT(VARCHAR(10),EndDate,120) AS EndDate,
LastAvgScore, FinalImpressionID, FinalImpressionName, FinalImpressionNumb
FROM #ResultTb ORDER BY InfoID,FinalImpressionID
END
ELSE
BEGIN
SELECT FinalImpressionName,CourseName,FinalImpressionNumb FROM #ResultTb ORDER BY InfoID,FinalImpressionID
END

varchar 值 'S' 转换成数据类型 int 时失败是指你定义数据类型时不对或者忘记了定义数据类型。追问

还有是在哪修改呢 是程序那需要定义数据类型 还是数据库呢?

追答

先检查下数据库是否定义类型,如果没有就只有用程序定义数据类型了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-11-22
某个记录的数值串内有字符'S',当然无法转换成数值了,需要找到这条记录把里面不是数值的字符删掉,如果字符串内确实无法避免出现非数值型字符,则需要在程序中进行处理

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网