【问题标题】:Inserting data into table via stored procedure通过存储过程将数据插入表中
【发布时间】:2017-02-28 00:04:23
【问题描述】:

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

我尝试将存储过程执行为

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)

执行this is时,出现此错误:

过程或函数 abc_insert 需要参数 @f,但未提供该参数。

【问题讨论】:

  • 请向我们展示您已经完成的工作,然后社区中的某个人将能够帮助您。
  • 可以分享一下代码吗?
  • 我希望我现在明白了

标签: sql-server stored-procedures


【解决方案1】:

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

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

您也需要提供 @queryaction 值!

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

【讨论】:

    【解决方案2】:

    变量@f DATETIME(16) 类型错误,

    应该很简单@f DATETIME

    【讨论】:

      【解决方案3】:
      declare @dt as datetime = getdate() 
      EXEC    abc_insert 'insert', 'a','b', 'c','d','e',@dt  
      

      注意:@f DATETIME(16) 在您的创建脚本中应该是 @f DATETIME

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-02-10
        • 1970-01-01
        • 2012-03-18
        • 2022-01-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多