ฉันมีฟังก์ชั่นดังต่อไปนี้
ALTER FUNCTION [dbo].[ActualWeightDIMS]
(
-- Add the parameters for the function here
@ActualWeight int,
@Actual_Dims_Lenght int,
@Actual_Dims_Width int,
@Actual_Dims_Height int
)
RETURNS varchar(50)
AS
BEGIN
DECLARE @ActualWeightDIMS varchar(50);
--Actual Weight
IF (@ActualWeight is not null)
SET @ActualWeightDIMS = @ActualWeight;
--Actual DIMS
IF (@Actual_Dims_Lenght is not null) AND
(@Actual_Dims_Width is not null) AND (@Actual_Dims_Height is not null)
SET @ActualWeightDIMS= @Actual_Dims_Lenght + 'x' + @Actual_Dims_Width + 'x' + @Actual_Dims_Height;
RETURN(@ActualWeightDIMS);
END
แต่เมื่อฉันพยายามใช้มันฉันได้รับข้อผิดพลาดต่อไปนี้ "การแปลงล้มเหลวเมื่อแปลงค่า varchar 'x' เป็นชนิดข้อมูล int" เมื่อฉันใช้คำสั่งเลือกต่อไปนี้
select
BA_Adjustment_Detail.ID_Number [ID_Number],
BA_Adjustment_Detail.Submit_Date [Submit_Date],
BA_Category.Category [category],
BA_Type_Of_Request.Request [Type_Of_Request],
dbo.ActualWeightDIMS(BA_Adjustment_Detail.ActualWeight,BA_Adjustment_Detail.Actual_Dims_Lenght,BA_Adjustment_Detail.Actual_Dims_Width,BA_Adjustment_Detail.Actual_Dims_Height) [Actual Weight/DIMS],
BA_Adjustment_Detail.Notes [Notes],
BA_Adjustment_Detail.UPSCustomerNo [UPSNo],
BA_Adjustment_Detail.TrackingNo [AirbillNo],
BA_Adjustment_Detail.StoreNo [StoreNo],
BA_Adjustment_Detail.Download_Date [Download_Date],
BA_Adjustment_Detail.Shipment_Date[ShipmentDate],
BA_Adjustment_Detail.FranchiseNo [FranchiseNo],
BA_Adjustment_Detail.CustomerNo [CustomerNo],
BA_Adjustment_Detail.BillTo [BillTo],
BA_Adjustment_Detail.Adjustment_Amount_Requested [Adjustment_Amount_Requested]
from BA_Adjustment_Detail
inner join BA_Category
on BA_Category.ID = BA_Adjustment_Detail.CategoryID
inner join BA_Type_Of_Request
on BA_Type_Of_Request.ID = BA_Adjustment_Detail.TypeOfRequestID
สิ่งที่ฉันต้องการทำคือถ้าน้ำหนักจริงไม่เป็นโมฆะให้คืนค่า ActualWeight สำหรับ "น้ำหนักจริง / DIMS" มิฉะนั้นให้ใช้ Actual_Dims_Lenght ความกว้างและความสูง
ถ้าเป็น DIMS ฉันต้องการฟอร์แมตผลลัพธ์เป็น LenghtxWidhtxHeight (15x10x4) น้ำหนักจริง Adcutal_Dims_Lenght ความกว้างและความสูงเป็นค่า int (จำนวนเต็ม) ทั้งหมด แต่ผลลัพธ์สำหรับ "น้ำหนักจริง / DIMS" ควรเป็น varchar (50)
ฉันเข้าใจผิดตรงไหน?
ขอบคุณ
แก้ไข: ผู้ใช้สามารถเลือกน้ำหนักหรือ DIMS ในหน้า ASP.net เท่านั้นและหากผู้ใช้เลือก DIMS ผู้ใช้จะต้องระบุความยาวความกว้างและความสูง มิฉะนั้นจะทำให้เกิดข้อผิดพลาดในหน้า ASP.net ฉันควรกังวลเกี่ยวกับเรื่องนี้ที่ด้าน sql หรือไม่?