Sql 从另一个表在表中插入记录的过程
我想在另一个表中插入记录,也可以从另一个具有额外参数的表中插入记录 我想将project_access作为用户名插入param,将project access作为硬代码值插入Y,并将所有值从project表中删除。我是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
用户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;
/