Я создал таблицу с одним из имен столбцов AS, определяемой пользователем. Я успешно вставил данные в таблицу, но я не могу выбрать и просмотреть всю таблицу.Проблема с отображением таблицы в SQL
CREATE TABLE Member_Profile(
Gender CHAR(1),
Name VARCHAR(50),
D_O_B DATE,
Weight DECIMAL(10,2),
Height DECIMAL(10,2),
Smoker CHAR(1),
Salary INT,
MemberID INT,
Cupid_Score AS [dbo].[Q3CupidUDF](Gender,Name,D_O_B,Weight,Height,Smoker,Salary),
PRIMARY KEY(MemberID)
)
INSERT INTO Member_Profile VALUES('M', 'Tim', '01-01-82', 97.0, 1.88, 'N', 65000, 1)
SELECT * FROM Member_Profile
Это ОДС для таблицы ----
CREATE FUNCTION [dbo].[Q3CupidUDF]
(
@Gender CHAR(1),
@Name VARCHAR(15),
@DOB DATE,
@Weight DECIMAL(10,2),
@Height DECIMAL(10,2),
@Smoker CHAR(1),
@Salary INT
)
RETURNS INT
AS
BEGIN
DECLARE @CupidScore INT
DECLARE @Age INT
SELECT @Age = DATEDIFF(YEAR, @DOB, GETDATE())
SELECT @CupidScore = CASE
WHEN @Age between 20 and 30 THEN 5
WHEN @Age between 31 and 40 THEN 4
WHEN @Age between 41 and 50 THEN 3
WHEN @Age > 50 THEN 2
ELSE 0
END
DECLARE @WtHt DECIMAL(2,1)
SET @WtHt = @Weight/(@Height*@Height)
SET @CupidScore = @CupidScore + CASE
WHEN @WtHt between 20 and 25 THEN 1
WHEN @WtHt between 25 and 30 THEN 3
WHEN @WtHt between 30 and 35 THEN 4
WHEN @WtHt between 35 and 40 THEN 2
ELSE 0
END
IF @Smoker = 'Y' SET @CupidScore = @CupidScore + 2
SET @CupidScore = @CupidScore + CASE
WHEN @Salary < 50000 THEN 1
WHEN @Salary between 50001 and 60000 THEN 2
WHEN @Salary between 60001 and 70000 THEN 3
WHEN @Salary > 70000 THEN 4
END
RETURN @CupidScore
END
Что сообщение об ошибке? –
Вы можете показать sql для UDF? – Donal
Это ошибка, которую я получаю при выполнении оператора select: «Ошибка арифметического переполнения, преобразующая числовые данные в числовой тип данных». –