PLSQL中的过程和函数之间有什么区别?

PLSQL中的过程和函数之间有什么区别?,plsql,plsqldeveloper,Plsql,Plsqldeveloper,我正在尝试使用PLSQL向表中插入一行。表名为文档\发布\历史记录。我正在使用一个API过程名过程 Insert_New_Line_ ( doc_class_ IN VARCHAR2, doc_no_ IN VARCHAR2, doc_sheet_ IN VARCHAR2, doc_rev_ IN VARCHAR2, info_category_db_ IN VARCHAR2, note_ IN VARCHAR2 ); 我很困惑程序是否能像函数一样返回值。

我正在尝试使用PLSQL向表中插入一行。表名为文档\发布\历史记录。我正在使用一个API过程名过程

Insert_New_Line_ (
   doc_class_ IN VARCHAR2,
   doc_no_ IN VARCHAR2,
   doc_sheet_ IN VARCHAR2,
   doc_rev_ IN VARCHAR2,
   info_category_db_ IN VARCHAR2,
   note_ IN VARCHAR2 );
我很困惑程序是否能像函数一样返回值。 我正在这样做:

DECLARE
    doc_class_ varchar2(4000) := 'CVS FILE';
    doc_no_ varchar2(4000) := '01004901.DWG-DWF';
    doc_sheet_ varchar2(20) := 1;
    doc_rev_ varchar2(20) := -1;
    info_category_db_  VARCHAR2(20) :=  NULL;
    note_ VARCHAR2(4000) := 'TEXTING TO UPDATE or FIeld to update';

BEGIN

Document_Issue_History_API.Insert_New_Line__ (doc_class_ ,doc_no_,doc_sheet_,doc_rev_ ,info_category_db_,note_);

end;

如何在表中插入行?

函数具有返回值,因此可能出现在表达式可能使用的任何位置(例如赋值运算符的右侧,或作为SQL语句中的列表达式),而过程没有返回值,也不能用作表达式

这并不是说过程不能返回值,因为只要它们是OUT或IN/OUT参数,它们就可以返回值。只是不能在表达式中直接使用该过程


类似地,由于函数确实有返回值(指定为OUT或IN/OUT参数的参数除外),它们必须在表达式中使用,不能直接调用。

如何使用PLSQL添加记录行而不使用INSERT?那么,如何在包内创建一个函数,以便能够向表中插入一行?有可能吗?关于您的第一条评论,如果最终在某个地方没有insert语句,您最终无法插入到表中。重新注释2)要在包中创建函数,只需声明它
函数(输入数据类型,…)返回SomeDataType作为[local declarations]BEGIN END[YourFunctionName]可能重复的