Sql 从另一个表在表中插入记录的过程

Sql 从另一个表在表中插入记录的过程,sql,oracle,stored-procedures,Sql,Oracle,Stored Procedures,我想在另一个表中插入记录,也可以从另一个具有额外参数的表中插入记录 我想将project_access作为用户名插入param,将project access作为硬代码值插入Y,并将所有值从project表中删除。我是sql新手。 谁能帮帮我吗 项目内访问 用户ID-应为过程的参数 项目\u对象\u id作为项目id或项目表 项目访问id由序列生成 在所有行中以Y的形式进行项目访问 项目名称应为项目的项目名称。您可能需要以下内容: insert into tableTarget( column

我想在另一个表中插入记录,也可以从另一个具有额外参数的表中插入记录

我想将project_access作为用户名插入param,将project access作为硬代码值插入Y,并将所有值从project表中删除。我是sql新手。 谁能帮帮我吗

项目内访问
用户ID-应为过程的参数 项目\u对象\u id作为项目id或项目表 项目访问id由序列生成 在所有行中以Y的形式进行项目访问
项目名称应为项目的项目名称。

您可能需要以下内容:

insert into tableTarget( column1, column2, column3)
select column1, column2, 'hardcoded value'
from tableSource
在程序中:

create or replace procedure yourProc(x in number) as
begin
    insert into tableTarget( column1, column2, column3)
    select column1, column2, x
    from tableSource;
end;

(注意:除非你有一个很好的理由,否则不要在程序内部调用COMMIT——将数据提交到最外层的块调用过程——这将允许你将调用嵌套到过程中,如果需要,在整个过程序列中发布<代码>回滚< /代码>。如果你只想做部分回滚,那么考虑使用<代码> SA。VEPOINTs.)

示例数据和期望结果将阐明您想要做的事情。您的问题还提到诸如“用户名”、“参数”和“硬代码值”之类的内容在您提供的数据模型中未标识的。我想从项目记录中插入项目访问表中的记录。项目ID-应为过程项目对象ID的参数作为项目ID或项目表项目访问ID由序列项目访问生成,在所有行中为Y项目名称应为项目名称必须重复wha您在问题中已经说过,这无助于让我们理解。我们可以阅读,但我们不理解您想要什么。很抱歉没有解释清楚。项目访问表应该由项目表的所有行填充,其中有两列来自项目表。其余两列将是硬代码。因此,例如,我希望在项目中输入userid-“abc”所有项目id和项目名称应添加到项目访问表中,项目id和项目名称来自项目表。项目访问在所有行中为Y,用户id在所有行中为abc。希望现在清楚谢谢。如何在存储过程中获取它。如果硬编码值如paramI中所示,该如何尝试以下操作创建或替换过程populateResource(varchar2中的用户名)是BEGIN insert到项目访问(用户ID、项目对象ID、项目访问权限、项目访问权限、项目访问权限、项目访问权限、项目名称)从PROJECT COMMIT;END;中选择用户名PROJECT.PROJECT\u ID PROJECT\u ACCESS\u SEQ.NEXTVAL,'Y',PROJECT.PROJECT\u NAME;但这会给我带来复杂的时间错误创建或替换过程populateResource(varchar2中的用户名)是BEGIN insert IN PROJECT\u ACCESS(用户ID、项目对象ID、项目访问权限、项目访问权限、项目访问权限、项目访问权限、项目访问权限、项目名称)选择用户名、项目名称、项目名称、项目名称、项目名称、项目名称、项目名称、项目名称、项目名称、项目名称、项目名称、项目名称
CREATE OR REPLACE PROCEDURE grantUserProjectAccess(
  in_user_id           IN  PROJECT_ACCESS.USER_ID%TYPE,
  in_project_object_id IN  PROJECT_ACCESS.PROJECT_OBJECT_ID%TYPE,
  out_error            OUT VARCHAR2
)
AS
  v_project_name PROJECT_ACCESS.PROJECT_NAME%TYPE;
BEGIN
  SELECT project_name
  INTO   v_project_name
  FROM   project
  WHERE  project_object_id = in_project_object_id;

  INSERT INTO project_access (
    user_id,
    project_object_id,
    project_access_id,
    project_access,
    project_name
  ) VALUES (
    in_user_id,
    in_project_object_id,
    PROJECT_ACCESS_SEQ.NEXTVAL,
    'Y',
    v_project_name
  );

  out_error := NULL;
EXCEPTION
  WHEN NO_DATA_FOUND THEN
    out_error   := 'Project Not Found';
  WHEN DUP_VAL_ON_INDEX THEN
    out_error   := 'Duplicate Entry';
END;
/