我正在开发一个应用程序,该应用程序使用 mod_plsql 和 Oracle 10G,通过直接从 Web 浏览器调用的 PL/SQL 存储过程生成网页。我正在寻找一种仅通过 POST 请求接受参数而不是 GET 请求的方法。
即,在 PHP 中,我只想要 $_POST['parameter_name'] 的值而不是 $_GET['parameter_name']。我一直无法在 Pl/SQL 中找到实现此目的的方法,因为参数是在过程定义中指定的,并且没有请求类型。
有什么办法可以用 PL/SQL 实现这一点吗?
谢谢你。
我正在与 Oracle 合作。
有没有办法使用 PL/SQL 计算 XML 文件中的节点(包括后代)的数量?
我希望能够将结果保存为变量以用作循环迭代器的上限。
我有以下xml,我想计算行节点内的节点数:
<row>
<date name="date1" id="101"></date>
<element1 name="ele1" id="111">
<stuff></stuff>
<stuff></stuff>
<stuff></stuff>
</element1>
<element2 name="ele2" id="121"></element2>
<element3 name="ele3" id="131></element15>
</row>
Run Code Online (Sandbox Code Playgroud)
结果应该是 7。
@johnbk 我正在与 Oracle 合作
这里的想法是,在获得节点数后,我可以将其用于:
nodeCount := 1;
FOR i IN 1 .. numNodes
LOOP
xpath1 := '/row/*[' || nodeCount || ']/@name';
SELECT EXTRACT(form_xml, xpath1) as other_name;
nodeCount := nodeCount +1;
END LOOP;
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助。
我正在尝试按照本指南创建pl/sql块,但在SET orderNumberSEQ.... 我究竟做错了什么?
declare
orderNumberSEQ number(5);
userid varchar(20);
begin
insert into bs_orders (userid, ono, timepurchased)
values('lilith', orderNum_seq.NEXTVAL,(SELECT current_timestamp FROM dual));
SET orderNumberSEQ := orderNum_seq.CURRVAL;
SELECT userid FROM bs_orders
where ono = orderNumberSEQ;
end;
/
Run Code Online (Sandbox Code Playgroud) 有人告诉我,我可以declare在存储过程的声明部分中省略关键字。declare声明部分的关键字是可选的吗?如果是,那它为什么会存在?
create or replace procedure myproc is
-- starting Declaration section
DECLARE -- is DECLARE keyword optional? Can i omit it here?
cursor mycursor as
select ...;
var1 number;
var2 varchar2;
-- end of Declaration section
BEGIN
...
END myproc;
Run Code Online (Sandbox Code Playgroud) create table ord_tbl
(
ord_id number(10) primary key,
ord_name varchar2(20),
quantity number(20),
cost_per_item number(30),
total_cost number(30)--This colm shud be (quantity*cost_per_item),
ord_date date
)
Run Code Online (Sandbox Code Playgroud)
因此,当我插入行时,'total_cost' 应该自动生成并插入到表中
我需要在 Java 和 plsql(Oracle 10g 的 DBMS_CRYPTO)上实现相同的加密/解密应用程序。
这两个实现都工作正常,但这里的 pb 是我得到不同的输出来加密相同的纯文本。下面是用于加密/解密过程(Java 和 PLSQL)的代码。
我对 DBMS_CRYPTO 和 Java 使用了相同的加密算法“AES/CBC/PKCS5Padding”。这里的问题是我得到了不同的输出来加密相同的纯文本。
import java.security.*;
import javax.crypto.*;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import sun.misc.*;
import org.apache.commons.codec.binary.Hex;
public class AESencrp {
private static final String ALGO = "AES/CBC/PKCS5Padding";
private static final byte[] keyValue = "MyEncryptionKey1".getBytes();
private static Key key;
private static Cipher decryptor;
private static Cipher encryptor;
public static void init() throws Exception
{
key = generateKey();
encryptor = Cipher.getInstance(ALGO);
IvParameterSpec iv = new IvParameterSpec(Hex.decodeHex("12345678901234567890123456789012".toCharArray()));
decryptor=Cipher.getInstance(ALGO);
encryptor.init(Cipher.ENCRYPT_MODE, key,iv); …Run Code Online (Sandbox Code Playgroud) 我们可以在Insert or Update触发器内部捕获由于Insert或由于Update语句而触发的触发器吗?
了解这一点的一种方法是为两者Insert和Update
但如果我能在一个触发器内做到这一点,那就太好了。
我想为我的 Oracle SQL 查询创建一个基于绑定参数的结果。
例如。
Select * from emp where ename = :xyz;
它应该在运行时询问我的 xyz 值。
我该怎么办?
它让我保持 givig 错误 - 未声明绑定变量...
请帮忙...
谢谢。
我正在尝试创建一个触发器,该触发器在触发时将数据插入到具有USER和SYSDATE数据的另一个表中。脚本但未从TRIGGER插入任何数据。
我正在运行Oracle Server。
SET SERVEROUTPUT ON;
CREATE TABLE dept1
( DEPTNO NUMBER(3) PRIMARY KEY,
DNAME VARCHAR2(20),
LOC VARCHAR2(20)
);
CREATE TABLE dept1_shadow
( DEPTNO NUMBER(3) PRIMARY KEY,
DNAME VARCHAR2(20),
LOC VARCHAR2(20),
USER_ VARCHAR2(32),
MODTIME CHAR(17)
);
INSERT INTO dept1 VALUES (10, 'ACCOUNTING', 'NEW YORK');
INSERT INTO dept1 VALUES (20, 'RESEARCH', 'DALLAS');
INSERT INTO dept1 VALUES (30, 'SALES', 'CHICAGO');
INSERT INTO dept1 VALUES (40, 'OPERATIONS', 'WASHINGTON (D.C.)');
INSERT INTO dept1 VALUES (50, 'MARKETING', 'BOSTON');
CREATE OR REPLACE TRIGGER row_dept1_trigger
AFTER INSERT …Run Code Online (Sandbox Code Playgroud) 我是oracle pl / sql的新手。我创建了新的程序包过程列表,然后想在单独的块中实现每个过程。这是我现在想要创建的过程列表,它仅仅是一个。
create or replace package listProcedures is
procedure bss_claim12
( o_claim_id out number,
o_error_code out varchar2,
o_error_msg out varchar2,
i_card_number varchar2,
i_phone_number varchar2,
i_product_id number,
i_summ_loan number,
client_code number,
mfo varchar2
);
Run Code Online (Sandbox Code Playgroud)
然后我想创建它的主体,但出现以下错误。PACKAGE BODY IBS.LISTPROCEDURES的编译错误
错误:PLS-00103:在预期以下情况之一时遇到符号“文件结尾”:
create or replace package body ibs.listprocedures is
procedure bss_claim12
( o_claim_id out number,
o_error_code out varchar2,
o_error_msg out varchar2,
i_card_number varchar2,
i_phone_number varchar2,
i_product_id number,
i_summ_loan number,
client_code number,
mfo varchar2
) is
begin
dbms_output.put_line(o_claim_id);
dbms_output.put_line(o_error_msg);
dbms_output.put_line(client_code);
end bss_claim12;
Run Code Online (Sandbox Code Playgroud)
我应该在此程序的主体中做些什么才能使其正常运行。