插入存储过程传递参数

4

我有这个SQL语句

INSERT housingSurvey ([nameID], [houseID], [jobID], [Active], [comment], [needsMaintenance], [lastUpdateDate) 
VALUES (@NAMEID, @HOUSEID, @JOBID, 1, @DUEDATE, @COMMENT, NULL, @LASTUPDATEDATE)

我尝试了这个存储过程,但是我没有得到当前日期。

CREATE PROCEDURE housingSurveyS(
                    @NAMEID INT,
                    @HOUSEID INT,
                    @JOBID INT, 
                    @COMMENT BIT,
                    @DUEDATE NVARCHAR,
                    CURRENTTIME)
AS
BEGIN
INSERT INTO housingSurvey(
    [nameID],
    [houseID],
    [jobID],
    [Active],
    [comment],
    [dueDate],
    [needsMaintenance],
    [lastupdatedate])
VALUES (
    @NAMEID,
    @HOUSEID,
    @JOBID,
    1,
    @COMMENT,
    @DUEDATE,
    NULL,
    @LASTUPDATEDATE)
END

请您看一下我做错了什么,谢谢。

更新 我将CURRENTTIME更改为DATETIME作为参数插入当前日期到[lastupdatedate]中...但它仍然无法工作...


比较一下你的查询语句中的变量顺序,...,同时你没有使用@ACTIVE而是使用了1。 - Jan.
首先,你的表名在 SQL INSERT 和存储过程中不同;其次,你的存储过程要求在 dueDate 之前输入 comment,但是你的值列表指定了 @DUEDATE@COMMENT 之前... - marc_s
哦,我明白了... JAN... 我把它删掉了... 现在 currenttime 不起作用了... - EagleFox
现在,在您的VALUES(....)列表中,在@LASTUPDATEDATE之前,您缺少一个逗号后面是NULL。顺便说一下:SQL Server Management Studio有一个“解析”按钮可以解析(因此语法检查!)您的语句或过程-这将捕获这样一个愚蠢的错误... - marc_s
你的程序中有一行叫做CURRENTTIME,这是什么意思? - Peter Monks
显示剩余3条评论
1个回答

6
VALUES (
    ...
    @DUEDATE,
    @COMMENT 

如果与INSERT语句字段列表中定义的顺序相关,则顺序错误,请交换它们。

编辑

CREATE PROCEDURE housingSurveyS(
    @NAMEID INT,
    @HOUSEID INT,
    @JOBID INT, 
    @COMMENT BIT,
    @DUEDATE NVARCHAR(32) --add a size, should this be DATETIME
)
AS
BEGIN
INSERT INTO housingSurvey(
    [nameID],
    [houseID],
    [jobID],
    [Active],
    [comment],
    [dueDate],
    [needsMaintenance],
    [lastupdatedate]
) VALUES (
    @NAMEID,
    @HOUSEID,
    @JOBID,
    1,
    @COMMENT,
    @DUEDATE,
    NULL,
    GETDATE()
)
END

谢谢Alex...我已经更改了那个...现在我无法获取当前时间...请看一下我的更新代码... - EagleFox
那么你没有传递日期时间?- 删除“,CURRENTTIME”,因为它不是有效的T-SQL,并且插入getdate()而不是@LASTUPDATEDATE,因为你在任何地方都没有声明/定义它。 - Alex K.
我的控制器中没有Alex... 当插入/更新时,我使用当前的时间/日期... - EagleFox
更新了,我不知道你的“控制器”是什么,但CURRENTTIME是不正确的。 - Alex K.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接