我尝试生成示例数据,因此我希望在我的Oracle表中插入多行。列值应该在1-5之间并且应该是完全随机的。我需要20个随机整数。 我的insert语句: BEGIN
FOR i IN 163 .. 400 LOOP
INSERT ALL INTO results
(student_id,OPN1,OPN2,OPN3,OPN4,AGG1,AGG2,AGG3,AGG4,NEU1,NEU2,NEU3,NEU4,EXT1,EXT2,EXT3,EXT4,CSN1,CSN2,CSN3,CSN4)
VALUES
(i,
round(dbms_random.value(1,5)),
rou
使用PLSQL,我创建了一个提供SEPA文件(xml文件)的程序。我正在使用DBMS_XMLDOM包。问题是撇号在xml文件中显示为'& apos;‘。
以下是程序的一部分:
text_value := MyCursor.ndest -- this a cursor value from the database. Let's say a name (D'ASILVA)
-- displaying text_value I see the apostrophe.
child_ofchelement:= DBMS_XMLDOM.CREATEELEMENT(do
我试图迭代来自DBMS_SQL.TO_CURSOR_NUMBER的游标号,并遇到问题--当我试图将一个值拉到变量中时,我得到了ORA-01007 (变量不在选择列表中)。
下面是一个复制我的问题的代码块:
DECLARE
cur SYS_REFCURSOR;
nm INTEGER;
colDescs DBMS_SQL.DESC_TAB2;
numCols INTEGER;
val VARCHAR2(3);
BEGIN
OPEN cur FOR
SELECT 'x' AS foo, 2 AS bar
FROM dual;
nm := D
我已经创建了以下测试程序,在打印调试消息时,我发现for循环不工作后程序的最后一条语句。为什么?
在以下情况下,我无法打印第三个for循环的调试消息,您可以在过程后找到结果:
CREATE OR REPLACE PROCEDURE TEST_SCRIPT AS
BEGIN
DBMS_OUTPUT.enable;
DBMS_OUTPUT.PUT('-- Before for loop --');
for rec in (
SELECT sysdate FROM DUAL
) loop
DBMS_OUTPUT.NEW_LINE();
DBMS_
使用Oracle数据库和PL/SQL。我创建了从基础中的表中生成XML输出的过程。但是,也需要反向过程才能将XML输出放回表中。从表中找到生成XML的函数很容易(dbms_xmlgen.getXML)。但我找不到相反的函数。如果你知道相反的函数,请在这里写。
转到XML:
create or replace
PROCEDURE xml_apt
AS
doc clob;
BEGIN
doc := dbms_xmlgen.getXML('select * from аpt');
dbms_output.put_line(doc);
END xml_apt;
当我运行出现错误的PLSQL块时,SQL Developer在给出错误详细信息之前会重复/复制整个脚本。这是非常可怕的,因为我写了很长的脚本,每次出错后我都会向下滚动。
我需要找到一种方法来禁止将整个脚本写入脚本控制台。我检查了首选项和帮助,但没有发现任何相关内容。
Error starting at line : 1 in command -
BEGIN
xx;
END**;
Error report -
ORA-06550: line 2, column 5:
PLS-00201: identifier 'XX' must be declared
ORA-065
我有一个函数,它接收一个查询作为参数(作为clob类型),并‘选择’这个查询的行来返回。我需要使用dbms_sql,因为查询的大小大于32kb (~150kb)。
我被困在了获取结果的点上:
-- execute immediate style (does not work with clob):
EXECUTE IMMEDIATE large_query BULK COLLECT INTO V_TAB ;
-- dbms_sql style:
v_upperbound := CEIL(DBMS_LOB.GETLENGTH(large_query)/256);
FOR i IN 1
我正在使用以下函数从目录中读取文件:
CREATE OR REPLACE FUNCTION loadBlobFromFile(p_file_name VARCHAR2) RETURN BLOB AS
dest_loc BLOB := empty_blob();
src_loc BFILE := BFILENAME('TMT', p_file_name);
BEGIN
-- Open source binary file from OS
DBMS_LOB.OPEN(src_loc, DBMS_LOB.LOB_READONLY);
-- Create t
是否有一种使用动态SQL-语句执行游标For循环的方法?
如果我不想声明一个记录,我可以这样做(只有当我声明了游标..):
For I in cuSelect Loop
dbms_output.put_line(I.NAME);
End Loop;
我可以为动态SQL语句打开一个游标:
Open cuSelect For 'Select * From TAB_X';
Fetch ceSelect Into recSelect;
Close cuSelect;
但要做到这一点,我必须首先宣布记录。
现在我的问题是,我必须为一个非常大而复杂的动态SQL-语句打开游标。记录的结构
我创建了一个对象,并尝试通过引用通过多个函数传递该对象
#include<iostream>
#include <string>
#include "DBMS.h"
using namespace std;
void Home(DBMS &);
int main()
{
DBMS dbms();
Home(dbms); // this is where the error is
return 0;
}
void Home(DBMS &dbms)
{
string dbName;
dbms.ad
我编写了触发器来检查客户是否有任何被暂停的帐户。如果是,他将无法创建一个新的帐户,但当我尝试做插入,插入仍然通过。有人能帮我吗?
CREATE OR REPLACE TRIGGER SuspendedAccount
BEFORE INSERT ON ACCOUNT
FOR EACH ROW
DECLARE
varIsProblemAccount Int;
BEGIN
SELECT COUNT(*) INTO varIsProblemAccount
FROM ACCOUNT
WHERE CUSTID = :new.custID
AND ACCSTATUS = 'Susp
我想分析一下甲骨文的问题。表track_table有active分区。我对分区不太了解。我想检查这个分区创建的条件是什么。为了检查我的表是否是分区的,我在下面的查询中使用,它表示PARTITION_NAME对于track_table表是活动的。
SELECT * FROM dba_tab_partitions WHERE table_name = 'track_table';
以下是我想分析的问题:
select count(*) as cnt
from track_table partition (active)
where trg_id > 198754
我有三个存储过程,一个主存储过程和一个终端存储过程。
我希望OneSP、TwoSP和ThreeSP都在同一时间(并行)运行,而endStoredProcedure只运行到1、2、3完成为止。
这个主存储过程将由第三方软件触发,所以我不希望它们在特定的时间运行。
我知道这是一个愚蠢的问题,但请帮助我的伙计们,非常感谢!
create or replace Procedure MasterStoredProcedure as
BEGIN
OneSP;-- These three SP insert data into three different tables and run
我的代码有什么问题?
SQL> declare
2 mark number :=50;
3 begin
4 mark :=& mark;
5 if (mark between 85 and 100)
6 then
7 dbms_output.put_line('mark is A ');
8 else if (mark between 50 and 65) then
9 dbms_output.put_line('mark is D ');
10 else if (mark between
在下面的查询中,select_string可以使用任何可能的数据类型返回任意数量的列和行。
Execute immediate 'select_string' into v_table_variable;
例如,select_string可以是'select name, last name from student'或'select date, subject, address , phone from booking',等等。
有人知道我如何定义v_table_variable以使执行立即按我的意愿运行吗?!之后,我打算做一个循环来读取这个变量
我以普通用户身份登录到数据库中:
SQL> connect
Enter user-name: myusername
Enter passwort:
Connected.
然后我尝试设置默认的http端口,如下所示:
SQL> Exec DBMS_XDB.SETHTTPPORT(3000);
但我收到了以下错误消息:
ERROR at line 1:
ORA-31050: Access denied
ORA-06512: at "XDB.DBMS_XDB", line 528
ORA-06512: at "XDB.DBMS_XDB", line 66
我在一个表中有一个CLOB列,其中包含大量的XML数据。我需要为表中的一行更新此列的值。我该怎么做呢?
我试过用谷歌搜索,但这些看起来很简单的东西在任何地方都不能用简单的语言表达。有没有人能提个建议?
如果我使用普通的update查询语法并将巨大的xml内容粘贴到单引号中( xml内容中的单引号被替换为两个单引号),那么sql开发人员就会禁用execute query按钮。
update tableName t
set t.clobField = 'How to specify physical file data'
where t.anotherField='val