【发布时间】:2021-07-18 14:19:58
【问题描述】:
我想要一个存储过程来根据生日计算年龄。
这是我的存储过程:
CREATE PROCEDURE CalculateAge
AS
UPDATE Person
SET Age = DATEDIFF(year, GETDATE(), BirthDate)
WHERE Age = Null;
这是我的表“人”
CREATE TABLE [dbo].[Person]
(
[Id] [int] NOT NULL,
[BirthDate] [date] NOT NULL,
[Email] [nvarchar](150) NOT NULL,
[Lastname] [varchar](50) NOT NULL,
[Firstname] [varchar](50) NOT NULL,
[Age] [nchar](10) NULL,
CONSTRAINT [PK_Person]
PRIMARY KEY CLUSTERED
)
但是,当我执行该过程时,带有“Person”的表并没有改变。它不会用年龄填充列...
可能是什么问题?
【问题讨论】:
-
用您正在使用的数据库标记您的问题。你真的在调用存储过程吗?
-
OT 为什么将 Age 声明为 nchar 而不是 int?
-
事实上,即使
int-tinyint也不是正确的数据类型,除非你碰巧是真人快打中的 Sub-zero :) -
Age应该是计算列,否则您将需要不断更新它
标签: sql-server stored-procedures ssms