Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 对Select语句中的项运行函数_Sql_Oracle_Function_Plsql - Fatal编程技术网

Sql 对Select语句中的项运行函数

Sql 对Select语句中的项运行函数,sql,oracle,function,plsql,Sql,Oracle,Function,Plsql,我有一个包含对象的表。我想对每个对象调用一个成员函数,它将改变每个对象上的一些值。问题是我当前的方法没有更改对象,而是似乎创建了新的对象,并且没有将更改保存到表中 我的代码看起来像 declare type row_type is table of my_table%rowtype; my_rows row_type; begin select * bulk collect into my_rows from my_table; for i in my_table.first .

我有一个包含对象的表。我想对每个对象调用一个成员函数,它将改变每个对象上的一些值。问题是我当前的方法没有更改对象,而是似乎创建了新的对象,并且没有将更改保存到表中

我的代码看起来像

declare
  type row_type is table of my_table%rowtype;
  my_rows row_type;
begin
  select * bulk collect into my_rows from my_table;
  for i in my_table.first .. my_table.last loop
    my_table(i).stored_class.add_func(1);
  end loop;
  commit;
end;
使用类似的模式

create table my_table
(
    stored_class my_class
);

create type my_class as object
(
    my_num number,
    member procedure add_func(in_number number)
);

create type my_class body is
    member procedure add_func(in_number number) is
    begin
        my_num := my_num + in_number;
    end
end;

非常感谢您的帮助。

当您想将对象写回数据库时,必须发出正确的sql命令。Plsql仍然与sql有所不同。Obecj属性只是ram中的变量当您在plsql中使用它们时,它们不是数据库字段。使用包含id或rowid的游标,获取变量,操纵对象,使用rowid和操纵对象更新行。