我建立了一个对表User增加记录的存储过程,如下:CREATEPROCEDURE[dbo].[user_add]@密码varchar(20),@昵称nchar(10),@... 我建立了一个对表User增加记录的存储过程,如下:
CREATE PROCEDURE [dbo].[user_add]
@密码 varchar(20),
@昵称 nchar(10),
@性别 nchar(2),
@生日 datetime,
@邮箱 varchar(50),
@地址 varchar(50)
AS
BEGIN TRANSACTION ADDUSER
SET NOCOUNT ON;
DECLARE @ReleaseDate AS datetime
SET @ReleaseDate = GETDATE()

INSERT INTO [user] (密码,昵称,性别,生日,邮箱,地址,注册日期)
VALUES (@密码,@昵称,@性别,@生日,@邮箱,@地址,@ReleaseDate)

SELECT 用户ID,昵称 FROM [user] WHERE 用户ID=@@IDENTITY
COMMIT TRANSACTION ADDUSER

而当我执行存储过程时,我需要把字符串表示的时间转换为Datetime类型;但执行时总是提示错误.
我的执行语句是:
EXEC user_add '19900101','用户','男',CONVERT(DATETIME,'01/01/1990'),'XXX@163.com','广东'.
提示的错误是:
消息 156,级别 15,状态 1,第 2 行
关键字 'CONVERT' 附近有语法错误。

但我不使用存储过程,而直接使用Insert语句时,用同样的CONVERT(DATETIME,'01/01/1990')却没有错,执行成功.

我很想知道这是为什么.
真的就如一楼所说的可以.
DECLARE @date AS DATETIME
SET @date = CONVERT(DATETIME,'07/22/1986')
EXEC user_add '19900101','用户','男',@date,'XXX@163.com','广东'.
这样真的行.

但有一个问题,我是想把这些SQL语句写到.cs文件中的,难道要那么麻烦的把声明语句都写上去吗? 咨询热线15800771381。堡盟的绝对值重载编码器可靠定位,无需重新设置参考零点,适用于恶劣的应用场合,特点有:1、采用创新技术和坚固的重载机械设计2、精确的光感应或磁式单圈感应技术3、广泛的接口选择,额外的增量信号4、自发电重载多圈计... 点击进入详情页 本回答由 堡盟 提供