SELECT @c_ID as C_ID,CDP_Part as CSN_Part, b.CSN_dataOriginal as CSN_NumberDataOriginal , c.CSN_dataOriginal as CSN_StatusData ,b.CSN_Updatetime as CSN_NumberUpdateTime ,c.CSN_Updatetime as CSN_StatusDataUpdateTime FROM CarModelDataParts_tbl a cross apply GetNewCarData(@C_ID, Cdp_Part , 0) b cross apply GetNewCarData(@C_ID, Cdp_Part , 1) c where cdp_fmodel in ( select [C_FactoryModelCode] from car_tbl where c_id =@c_id ) and cdp_isdel=0 and cdp_isdata=1 -- select @end_date = getdate() -- select datediff(ms,@begin_date,@end_date) as '用时/毫秒' GO Create FUNCTION GetNewCarData ( @cid int, @part int, @type int ) RETURNS @temptable table (CSN_Data varchar(Max),CSN_DataOriginal varchar(Max),CSN_DataByte varbinary(Max), CSN_UpdateTime datetime) AS BEGIN insert into @temptable select top 1 CSN_Data,CSN_DataOriginal,CSN_DataByte,CSN_UpdateTime from CarVehicleData_tbl where C_ID=@cid and CSN_Part =@part and CSN_Type=@type order by CSN_UpdateTime desc return END
这个存取过程调用了一个自定义函数 我把这个自定应函数 去掉后 就没有问题了
代码如下CREATE PROCEDURE CarVehicleData_tbl_GetMaxData
@C_ID int
AS
-- declare @begin_date datetime
-- declare @end_date datetime
-- select @begin_date = getdate()
SELECT
@c_ID as C_ID,CDP_Part as CSN_Part, b.CSN_dataOriginal as CSN_NumberDataOriginal
, c.CSN_dataOriginal as CSN_StatusData
,b.CSN_Updatetime as CSN_NumberUpdateTime
,c.CSN_Updatetime as CSN_StatusDataUpdateTime
FROM CarModelDataParts_tbl a
cross apply GetNewCarData(@C_ID, Cdp_Part , 0) b
cross apply GetNewCarData(@C_ID, Cdp_Part , 1) c
where cdp_fmodel in ( select [C_FactoryModelCode] from car_tbl where c_id =@c_id ) and cdp_isdel=0 and cdp_isdata=1
-- select @end_date = getdate()
-- select datediff(ms,@begin_date,@end_date) as '用时/毫秒'
GO Create FUNCTION GetNewCarData
(
@cid int,
@part int,
@type int
)
RETURNS @temptable table (CSN_Data varchar(Max),CSN_DataOriginal varchar(Max),CSN_DataByte varbinary(Max), CSN_UpdateTime datetime)
AS
BEGIN
insert into @temptable select top 1 CSN_Data,CSN_DataOriginal,CSN_DataByte,CSN_UpdateTime from
CarVehicleData_tbl where C_ID=@cid and CSN_Part =@part and CSN_Type=@type order by CSN_UpdateTime desc return END
cross apply GetNewCarData(@C_ID, Cdp_Part , 1) c
去掉 就正常了 但是我在查询分析器里面 单独调用 GetNewCarData 或者整个调用着存取过程 都没有问题