在表列中,我有这个值:
DV-2011-01-000004(数据类型为varchar2)
我怎样才能得到字符串'000004'的一部分?在t-sql中他们有这个right()函数,但是在PL SQL中,我似乎不能像t-sql中的right()那样找到一个函数.
谢谢您的帮助.
我在Oracle数据库10.2.0.4.0中运行了一个"巨大的"Pl/Sql程序包(大约1.4 Mb,大约30.000行) - 在Solaris上运行64位.
我可以一步一步地调试它(包被标记为debuggin)但我的问题是当我尝试观察或检查任何变量时,PL/Sql开发人员向我显示任何变量(varchar2,数字等)的"非变量"我不能看这样的东西:
strTipo VARCHAR2(20) := 'PRUEBA';
Run Code Online (Sandbox Code Playgroud)
我可以在其他小包中调试和观察/检查变量,但不能在巨大的包中调试.dbms_output.put_line会让我发疯.
很多节点?Oracle无法为varibles分配内存?
是否有人在Oracle中有一些配置参数或我该怎么办?
这个庞大的包装对我来说不是一个解决方案.我不能这样做.
关心并提前致谢.
我需要使用PLSQL Developer来访问oracle数据库.当我尝试连接到我的数据库时出现以下错误.ORA-12154: TNS:could not resolve the connect identifier specified.我可以使用SQLPLUS命令行来连接到数据库,并TNSPING成功返回,但我想不出为什么PLSQL开发者将无法正常工作-这是使用正确的tnsnames.ora文件,并在那里连接字符串是正确的,因为它与tnsping使用的相同.
任何人都知道我可以做些什么来解决这个问题?我已经查看了关于这个特定错误的其他线程而没有运气.
tnsnames.ora中
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = MININT-AIVKVBM)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
Run Code Online (Sandbox Code Playgroud)
SQLNET.ORA
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
Run Code Online (Sandbox Code Playgroud)
sqlpus命令行 图像在这里
PLSQL Developer连接首选项:此处为图像
我是PL/SQL编程的新手.我试着在代码中编写带有一些DML语句(插入)的pl/sql过程.在pl/sql代码中执行插入操作后,我没有进行任何显式提交.但是在执行pl/sql过程后,事务将被提交.
这是默认行为吗?
我怎么能控制这个?
我想测试一些模式和索引,我想知道PL/SQL Developer中是否有可以生成测试数据的功能(所以我不必创建序列和循环来在表中插入数据).
我正在尝试使用 Oracle 全局临时表,而无需在数据库中物理创建表。以下代码不起作用。有人可以解释一下使用全局临时表的正确方法吗?
declare
global temporary table my_temp_table(column1 number) on commit preserve rows;
begin
insert into my_temp_table (column1) values (1);
select * from my_temp_table;
end;
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用PL/SQL开发人员的内置调试器来调试过程.
单步执行后BEGIN,当调试器超过实际的过程调用时,"步入"按钮将执行该过程而不输入它.
任何建议,将不胜感激.
我想使用PL/SQL Developer
首先是我的oracle目录
C:\oracle\product\10.2.0\client_1\BIN
我使用windows10和环境变量设置
ORACLE_HOME C:\oracle\product\10.2.0\client_1
Path C:\oracle\product\10.2.0\client_1\BIN
但执行初始化错误.
Initialization error
Could not load "C:\oracle\product\10.2.0\client_1\bin\oci.dll"
OracleHomeKey: SOFTWARE\ORACLE\KEY_OraClient10g_home1
OracleHomeDir: C:\oracle\product\10.2.0\client_1
Found: oci.dll
Using: C:\oracle\product\10.2.0\client_1\bin\oci.dll
LoadLibrary(C:\oracle\product\10.2.0\client_1\bin\oci.dll) return 0
Run Code Online (Sandbox Code Playgroud) 我需要更新通过主/外键连接的两个表中的列。我的问题是,当我尝试分别更新任何一个表时,都会出现以下两种情况(取决于我尝试更新的表):
ORA-02292:违反完整性约束(URMS.EMSR_EMS_FK)-找到子记录
要么
ORA-02291:违反完整性约束(URMS.EMSR_EMS_FK)-找不到父密钥
有没有办法用新值在完全相同的时间更新两个表?我发现的一个解决方案是复制现有行并将它们插入为新行,然后可以对其进行更新-然后可以删除旧行。
这是唯一的解决方案,还是有更简单的方法解决此问题?
我正在尝试运行我编写的 PL/SQL 脚本,但出现错误:
PLS-00653: aggregate/table functions are not allowed in PL/SQL scope
这里的问题不是错误本身,而是抛出错误的行。
这是我的 PL/SQL 块,它抛出此错误:
DECLARE
TYPE l_code_arr_typ IS VARRAY(3) OF VARCHAR2(100);
l_code_arr l_code_arr_typ;
l_objet objet_interface_pkg.objet_interface_typ;
l_resultat CLOB;
l_valeur valeur_pkg.valeur_typ;
l_liens lien_objet_interface_pkg.lien_objet_interface_tab;
l_rows NUMBER;
BEGIN
l_code_arr := l_code_arr_typ('champ.fonctions.dossier.particulier',
'champ.fonctions.region.admin',
'champ.fonctions.ministere.organisme');
l_resultat := '{';
FOR l_idx IN 1 .. l_code_arr.count LOOP
l_objet := objet_interface_pkg.obtenir_fnc(p_code => l_code_arr(l_idx),
p_acron_sys => :acronyme);
l_resultat := l_resultat || '"' || l_objet.code || '":[';
l_liens := lien_objet_interface_pkg.obtenir_par_objet_fnc(p_id_objet => l_objet.id_obj);
FOR l_lien IN (SELECT * FROM TABLE(l_liens)) …Run Code Online (Sandbox Code Playgroud)