通过存储过程将数据插入表中

时间:2017-02-28 00:04:24

标签: sql-server stored-procedures

我创建了一个表和存储过程,通过GUI在reportnet上将数据插入到表中,但是没有插入数据,所以我回来检查插入存储过程中是否有任何错误。

我尝试将存储过程作为

执行
EXEC DBO.Tablename 'param1','Param2'

等。我不知道我是否正确执行了它,但是因为应该提供更多列而导致错误。有人可以帮我如何执行存储过程来插入值吗?

这是我用来创建存储过程的代码:

Create Procedure dbo.abc_insert  
       @queryaction Varchar(6),
       @a varchar(8),
       @b varchar(16),
       @c varchar(8),
       @d varchar(16),
       @e varchar(8),
       @f DATETIME(16)  

    Declare @g DATETIME,
            @Msg Varchar(max),  

    -- Variable initialization
    select @g=processdate from util.dbo.processdate

    -- validate @queryaction
    IF @queryaction not in ('insert','delete') or @a is null
    begin
        set @msg='error'
        Raiserror (@msg,18,1);
        return
    end

    --INSERT
    if @queryaction ='insert'
        insert into dbo.abc_insert (a, b, c, d, e, f, g)
        values (@a, @b, @c, @d, @e, @f, @g)

我正在尝试执行此查询并检查它是否在第一时间工作以查看任何编码错误。

我试图像这样执行:

EXEC dbo.abc_insert 'a', 'b', 'c', 'd', 'e', 'f' 
--(g value will be taken from  process date so not entering g value)

执行此操作时,会发生此错误:

  

过程或函数abc_insert需要参数@f,这是未提供的。

3 个答案:

答案 0 :(得分:2)

您需要首先传递所有必需的参数 - @queryaction,然后传递六个值。您目前发送六个值 - 但查询操作没有任何内容:

EXEC dbo.abc_insert 'a', 'b', 'c', 'd', 'e', 'f' 

您还需要提供@queryaction值!

EXEC dbo.abc_insert 'insert', 'a', 'b', 'c', 'd', 'e', 'f' 

答案 1 :(得分:0)

变量@f DATETIME类型错误,

应该很简单import time def printScore(score): print("The score is {}".format(score)) def processGame(score,callback): time.sleep(3) callback(5) processGame(5,printScore)

答案 2 :(得分:0)

declare @dt as datetime = getdate() 
EXEC    abc_insert 'insert', 'a','b', 'c','d','e',@dt  

注意:在创建脚本中,@ f DATETIME(16)应该为@f DATETIME