我对SQL相当陌生,试图编写一个程序来检查传入的值并设置本地日期时间变量,然后返回该变量。SQL从过程返回日期时间导致隐式转换错误
USE [MyDB]
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [Common].[Update_Date]
@Status_ID int
AS
BEGIN
SET NOCOUNT ON;
DECLARE @Date_Value DATETIME
IF @Status_ID = 2
SET @Date_Value = GETDATE()
ELSE
SET @Date_Value = NULL
RETURN @Date_Value
END
GO
当我尝试执行该脚本,我得到以下错误:
消息257,级别16,状态3,过程UPDATE_DATE 19行 从数据datetime类型为int隐式转换是不允许的。使用CONVERT函数来运行此查询。
它试图用我的@Status_ID参数做些什么吗?
什么是决定因素选择使这个功能在程序上? – ShelbyZ
通常我会将存储过程看作是将更改存储在数据库中的数据的操作,或者返回整个结果集以及可选的OUTPUT参数值。而函数不影响任何数据,只是基于传递的参数和可选的数据读取返回一个值 – Curt