我正在尝试制作一个交互式网格,允许用户根据他们拥有的权限/特权来更新某些表。目前,APEX 中有一个可更新的表,但它允许用户编辑每一列。有没有办法不允许用户编辑 APEX ORACLE 中的某些列?谢谢
以下是我的查询:
SELECT LISTAGG(product_name, chr(10)) WITHIN GROUP (ORDER BY product_name) "Product_Listing"
FROM products;
Run Code Online (Sandbox Code Playgroud)
查询的输出是:
apple
orange
apple
mango
orange
banana
banana
apple
Run Code Online (Sandbox Code Playgroud)
所需的输出是:
apple
orange
mango
banana
Run Code Online (Sandbox Code Playgroud)
我如何使用 regexp_replace 来实现此目的?任何其他功能/想法。
提前致谢。
在我的 PL/SQL 脚本中,当 JUSTIFIC_REC 表示联接时,如何声明它?
SELECT *
INTO JUSTIFIC_REC
FROM TABLE1 A
INNER JOIN TABLE2 B
ON A.ID_JUSTIFIC = B.ID_JUSTIFIC ;
Run Code Online (Sandbox Code Playgroud)
我想要的只是将一个串联行插入到 TABLE3 中:
INSERT INTO MOF_OUTACCDTL_REQ VALUES(
JUSTIFIC_rec.ENTRY_COMMENTS || ' ' || JUSTIFIC_rec.DESCRIPTION );
Run Code Online (Sandbox Code Playgroud)
我的脚本开头的 JUSTIFIC_REC 声明应该如何?
如果不是 INNER JOIN ,我会写类似: JUSTIFIC_rec TABLE1%ROWTYPE;
在包规范中,函数名称仅出现一次,因此它不会重载。在包体中,相同的函数名称使用不同的参数集出现两次。其中之一的参数与封装规格中的参数相同。我的问题是,包体中的“第一个 func”是否实际被调用,如果是,它到底在做什么?它正试图回归自己。
--package specification
CREATE OR REPLACE
PACKAGE jtestpkg
IS
FUNCTION testfunc(p_num IN NUMBER, p_out1 IN out varchar2, p_out2 IN out varchar2)
RETURN NUMBER;
END jtestpkg;
--package body
CREATE OR REPLACE
PACKAGE BODY jtestpkg
IS
--first func
function testfunc
(p_num IN NUMBER,
p_out1 IN OUT varchar2)
return number is
v_out2 varchar2(50);
BEGIN
dbms_output.put_line('invoking first func');
RETURN testfunc(
p_num,
p_out1,
v_out2);
END;
--second func
FUNCTION testfunc(
p_num IN NUMBER,
p_out1 IN OUT varchar2,
p_out2 IN OUT varchar2)
RETURN NUMBER
IS
v_num …Run Code Online (Sandbox Code Playgroud) 我的示例仅返回BMW 2010. 我怎样才能让它AUDI 2000返回BMW 2010?
declare
sample_json varchar2 (32767)
:= '
[{"NAME":"AUDI","YEAR":"2000"},{"NAME":"BMW","YEAR":"2010"}]
';
begin
apex_json.parse (sample_json);
dbms_output.put_line (apex_json.get_varchar2 ('NAME'));
dbms_output.put_line (apex_json.get_varchar2 ('YEAR'));
end;
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个使用游标的过程,该游标可以启用我的架构中的所有触发器。但是,我在第 16 行收到此错误:PL/SQL: SQL 语句被忽略,这是我使用 fetch 的行。
CREATE OR REPLACE PROCEDURE enable_trigg_proc
IS
v_trigger_name trigger_name.user_triggers%TYPE;
CURSOR enable_trigg_cur
IS
SELECT TRIGGER_NAME INTO v_trigger_name
FROM user_triggers
WHERE STATUS = 'DISABLED';
BEGIN
OPEN enable_trigg_cur;
LOOP
FETCH enable_trigg_cur INTO v_trigger_name ;
EXIT WHEN enable_trigg_cur%NOTFOUND;
EXECUTE IMMEDIATE 'ALTER TRIGGER v_trigger_name ENABLE';
END LOOP;
close enable_trigg_cur;
END;
Run Code Online (Sandbox Code Playgroud) 正如标题所说,是否可以防止表中的数据被更新呢?我尝试使用以下触发器
CREATE OR REPLACE TRIGGER block_payment_update
BEFORE UPDATE ON payment
DECLARE
e_no_update_allowed EXCEPTION;
BEGIN
RAISE e_no_update_allowed;
EXCEPTION WHEN e_no_update_allowed THEN
dbms_output.put_line('Updating PAYMENT table is not allowed');
END;
Run Code Online (Sandbox Code Playgroud)
我知道可以使用LOCK TABLE statementwith SHARE ROW EXCLUSIVE,但是它是否也有可能阻止向表中插入数据?
我写了一个 PL/SQL 函数:-
CREATE OR REPLACE FUNCTION register_driver1(driver_name IN VARCHAR, pass_word IN VARCHAR) RETURN NUMBER AS
sql_stmt VARCHAR2(200);
driver_id NUMBER;
new_view_name VARCHAR(50);
BEGIN
sql_stmt := 'CREATE USER '||driver_name||' identified by '||pass_word;
EXECUTE IMMEDIATE sql_stmt;
sql_stmt := 'grant create session to '||driver_name;
EXECUTE IMMEDIATE sql_stmt;
driver_id := driver_ids.nextval;
new_view_name := 'vehicle_'||driver_name;
sql_stmt := 'CREATE VIEW '||new_view_name|| ' AS SELECT Model, Seats, reg_no FROM Vehicle WHERE(d_id='||driver_id||')';
EXECUTE IMMEDIATE sql_stmt;
sql_stmt := 'CREATE OR REPLACE TRIGGER reg_vehicle
INSTEAD OF INSERT ON '||new_view_name||
' …Run Code Online (Sandbox Code Playgroud) 我使用过程成功创建了包和包主体。
CREATE OR REPLACE PACKAGE pack_test IS
PROCEDURE proc_test();
END pack_test;
CREATE OR REPLACE PACKAGE BODY pack_test IS
PROCEDURE proc_test() IS
...
END proc_test;
END pack_test;
Run Code Online (Sandbox Code Playgroud)
但是当我尝试将此过程替换为:
CREATE OR REPLACE PROCEDURE pack_test.proc_test() IS
.....
END pack_test.proc_test;
Run Code Online (Sandbox Code Playgroud)
我收到错误:
Error report - ORA-01031: Insufficient privileges
*Cause: An attempt was made to perform a database operation without the necessary privileges
Run Code Online (Sandbox Code Playgroud)
但我已经授予 CREATE PROCEDURE (并且我成功创建了包 pack_test )。
我可以在不修改并重新提交整个包主体代码的情况下替换包中的过程吗?
我正在尝试指定 SharePoint 位置的文件路径。例如,如果 URL 是这样的,那么处理 URL 中的空格的最佳方法是什么?
file_path_ varchar2(2000) := 'https://business123.sharepoint.com/sites/TEST/Private Documents/Export Test';
Run Code Online (Sandbox Code Playgroud)
原始 URL 在“私有”和“文档”以及“导出和测试”之间有 %20。我尝试过与 inside 串联|| '' ||并使用" "inside ' '。有没有办法从 SharePoint 生成不同的 URL?尝试写入文件夹位置的用户具有完全访问权限和权限,因此我知道不是这样,而是阻止我写入该文件夹。
有人有什么很酷的想法吗?提前谢谢了。
oracle ×10
plsql ×10
sql ×3
oracle12c ×2
dynamic-sql ×1
oracle-apex ×1
overloading ×1
sharepoint ×1
url ×1