例如:
a)在pl/sql中:
SE VARCHAR2(5) := 0;
FIME VARCHAR2(100) := P_FIME;
Run Code Online (Sandbox Code Playgroud)
b)在java中(这是正确的吗?还是需要用string []替换varchar2?):
varchar2 SE[5] = 0;
varchar2 FIME[100] = P_FIME;
Run Code Online (Sandbox Code Playgroud) 我正在创建一个这样的查询:
v_sql:=' SELECT abc FROM '||v_table||'
WHERE area IN ('''||v_area||''')
AND (
('''||p_supp_nbr||''' IS NULL)
OR
supplr_vn IN ('''||p_supp_nbr||''')
)
Run Code Online (Sandbox Code Playgroud)
现在,当p_supp_nbr是NULL那么它不是索取.
我是这样的:
((''IS NULL) OR (supplr_vn =''))
它在桌子上的检查空间
但我希望((NULL IS NULL) OR (supplr_vn =NULL))条件无效
谢谢你的善意
我在包的规范中声明了记录类型和记录表,我需要使用这个表类型作为管道函数的返回.
如果我将INDEX BY(某些东西)添加到表声明中,导致管道函数中的错误编译.为什么不能使用INDEX BY?
在SQL Server中,性能明智,使用IF EXISTS (select * ...)比IF (select count(1)...) > 0... 更好.
但是,看起来甲骨文不允许EXISTS在IF声明中,这样做会有什么替代方法,因为使用IF select count(1) into...效率非常低效?
代码示例:
IF (select count(1) from _TABLE where FIELD IS NULL) > 0 THEN
UPDATE TABLE _TABLE
SET FIELD = VAR
WHERE FIELD IS NULL;
END IF;
Run Code Online (Sandbox Code Playgroud) 我创建了一个名为greet的过程:
create procedure greet(message in char(50))
as
begin
dbms_output.put_line('Greet Message : ' || message);
end;
Run Code Online (Sandbox Code Playgroud)
程序编译成功,但当我尝试将其称为:
execute greet('Hey ! This is a self created procedure :)');
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
execute greet('Hey ! This is a self created procedure :)')
Error report:
ORA-06550: line 1, column 7:
PLS-00905: object SUHAIL.GREET is invalid
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:
Run Code Online (Sandbox Code Playgroud)
它有什么错误?我为什么要这个?
注意:'suhail'是连接到oracle服务器的当前用户的名称
我创建了一个名为的存储过程
traffic_details_temp_send_mail;
Run Code Online (Sandbox Code Playgroud)
如何让这个程序每天上午10点运行?
请帮助处理代码块.
提前致谢.
CREATE OR REPLACE Function TotalIncome
( name_in IN varchar2 )
RETURN varchar2
IS
total_val number(6);
cursor c1 is
select monthly_income
from employees
where name = name_in;
BEGIN
total_val := 0;
FOR employee_rec in c1
LOOP
total_val := total_val + employee_rec.monthly_income;
END LOOP;
RETURN total_val;
END;
Run Code Online (Sandbox Code Playgroud)
在这个例子中,我被告知我们正在循环遍历值,但我不理解的是,如果我们循环遍历值,为什么有employee_rec.monthly_income必要?此外,当我做一个FETCHon employee_rec我似乎得到一个错误,所以我猜他们彼此不同.
我的任务是将我创建的完整MS Access应用程序转换为Oracle应用程序.Access数据库包括大约十几个表和另外十二个查询,包括我必须使用的一些VBA逻辑来有效地排序事物.我还有VBA背后的表单来运行查询.我的目标是在Oracle服务器上重新创建此应用程序,设置相同类型的表和查询,并使用Application Express进行用户输入.这不会是一个有很多用户的环境,但有时可能有2-3人访问同一个数据库.
我的问题是:作为MS Access应用程序的开发人员,您能否推荐任何快速指南(而不是完整的书籍),这些指南可以让我了解开发Oracle应用程序时设计和方法的主要差异?我正在考虑存储过程,视图,事务以及MS Access中不可用的类似事物.最后,我需要知道如何让不同的用户根据需要使用表单编辑和导入数据到数据库,并运行相同的查询并生成特定于每个用户的输出表(所以不要写入相同的每次表).
我有这样的场景,我需要创建一个存储过程,其中列将动态.基于此列,应创建临时表.实际上,我在SQL Server中执行的这种情况已将SQL Server数据库迁移到Oracle.
谢谢
我想实现一个只返回登录用户并仅显示记录的查询,我按照以下方式进行了操作:
SELECT * FROM EMPLOYEE
WHERE UPPER(username) = v('APP_USER')
Run Code Online (Sandbox Code Playgroud)
但是,我有另一个名为User_Type的列,用户可以是类型1,2或3.如果我的用户类型为1,我希望查询也返回所有表记录,因为用户类型1是管理员.
我想这样做:
BEGIN
SELECT * FROM Employee
WHERE upper(username) = v('APP_USER')
IF User_Type = 1
THEN SELECT * FROM Employee
END IF;
END;
/
Run Code Online (Sandbox Code Playgroud)
但它在APEX Oracle PLSQL中不起作用.
有什么建议?
plsql ×10
oracle ×7
sql ×3
oracle11g ×2
dynamic ×1
if-statement ×1
java ×1
ms-access ×1
oracle-apex ×1
oracle10g ×1
procedure ×1
sql-server ×1