我提出了一个问题。请需要你的专业知识..
包含变量p_user_id varchar(50)的PL/SQL块
设置为低于值的值
p_user_id := '101,102,103';
我在PL/SQl块中有如下查询
select Count(*) into v_count
from users
where user_id not in (p_user_id);
每次我调用这个PL/SQL块时,users的值都是相同的,即v_count表中的记录总数。Not In子句不能正常工作。请帮帮忙。
在选择id时,它不能等于0,值也不能是(null)。我写道:
WHERE id IS NOT NULL (+) and id not in ('0')
我有两个错误
错误(9,5):PL/ SQL :忽略SQL语句
错误(38,119):PL/ SQL : ORA-00933: SQL命令未正确结束我将其更改为:
WHERE id IS NOT NULL (+) and id is not ('0')
同样的错误也发生了。我应该写什么作为WHERE子句?
我在php中使用MySQLi来防止SQL注入到我的表中。
我有以下SQL命令,如果输入到phpMyAdmin中,它可以很好地工作。
INSERT INTO UsageData (MyID) SELECT * FROM (SELECT 'USER') AS tmp WHERE NOT EXISTS ( SELECT MyID FROM UsageData WHERE MyID = 'USER') LIMIT 1
本质上,它的目的是插入一个新行,其中MyID作为'USER‘,如果这样的行还不存在的话。
我试着用php这样做。
$query1 = "I
我使用的是APEX 5.0。我需要一些代码从数据库中获得一个clob,并将其保存回数据库,clob有时会大于32k。我使用的是APEX富文本编辑器(CKEditor4)。PL/SQL对我来说没问题,但javascript对我来说是新的。
一旦我在APEX中使用了内置的PL/SQL,我就被限制在32k以内,这样就不能工作了。一旦clob大于32k,我就会得到"ORA-06502: PL/SQL: numeric or value error“。我试过一个插件"Clob loader“,它在APEX中工作正常(通过一个集合),但我找不到任何方法从db加载或保存集合。
我有3个单选按钮,当选择时,将运行不同的查询。我不知道grails单选按钮的if-else条件是如何工作的,因为我对grails完全不熟悉。这是我的gsp页面。
<label>Search id:</label><input type = "text" name = "searchid1">
<input type ="submit" name ="search" value ="Go!">
<br>
<g:radio name="myG
我有以下查询:
SELECT * FROM My_table
WHERE type_id IN
CASE WHEN :P1_type IS NULL THEN (SELECT id FROM type)
ELSE (:P1_type)
END
当我尝试运行它时,我得到了以下错误:ORA-01427: Subquery returns more than one row,我认为我的查询不正确,所以我尝试了
SELECT * FROM My_table
WHERE type_id IN (SELECT id FROM type)
这一次,它工作得很好,这意味着(在我看来) case语句在返回多行
我有下面的PL/SQL块,它工作得很好。我想从另一个PL/SQL块调用这个函数(TimeToFrame)。
我不能在存储在DB中的过程或包中声明此函数。换句话说,如果pl/sql和pl/sql都是匿名块,我如何从另一个pl/sql调用pl/sql?
如果我把这个函数放在一个单独的.sql文件中会怎么样?我不能从我的匿名块中调用那个.sql文件,并给它传递一些IN参数,然后让那个函数返回OUT参数吗?
Declare
nTime Number;
FUNCTION TimeToFrame(pTime IN Varchar2)
return NUMBER IS
nTime NUMBER;
BEGI
FOR r IN (select 'DRR_DEV.' ||object_name as obj from dba_objects where object_type = 'INDEX'
and owner ='DRR_DEV')
LOOP
l_sql := 'ALTER INDEX '||r.obj||' REBUILD'||'';
execute immediate l_sql;
END LOOP;
在上面的FOR..IN循环中,循环特定模式的所有索引
我有一个简单的select查询,如下所示,它只有2列:
SELECT a, b FROM table;
我随身携带了一些映射数据,如下所示:
if a=1 and b=1 then c=100
if a=1 and b=2 then c=200
if a=2 and b=1 then c=300
and so on.
现在,我需要创建一个查询,这样我就可以得到如下输出:
1,1,100
1,2,200
2,1,300
and so on
在这里,我不想创建一个表并存储映射数据。我可以在PL/SQL中创建任何数据结构来存储它。
我如何才能做到这一点?
PS:我尝试使用PL/SQL表和INNER
我有下面的PL SQL块:
WHENEVER SQLERROR EXIT 1
SET SERVEROUTPUT ON
DECLARE
v_sql VARCHAR2(500);
f1 VARCHAR2(20) := 'abc';
p_procname VARCHAR2 (30) := 'OPENLOG';
PROCEDURE OPENLOG (file_name IN VARCHAR2)
IS
BEGIN
NULL;
END;
BEGIN
DBMS_OUTPUT.PUT_LINE('Begin'
我是甲骨文新手。我使用pl sql developer在oracle数据库中创建了一个函数,并成功执行。现在,我想通过查询从同一个pl sql开发人员运行该函数。但它不能正常工作。下面是我的函数。
create or replace function com.my_first_test_function(module_code out varchar2,
bpm_process_name out varchar2,module_name out varchar2,input in number)return number is
y_return
我试图从存储在表中的Json文件中提取数据。但我无法在PL/SQL中执行包JSON_VALUE。
下面的查询工作正常:
SELECT JSON_VALUE('{a:100}', '$.a' ) AS value
FROM DUAL;
但是在PL/SQL块下面不起作用:
declare
SQL_QUERY_RES varchar2(300);
cursor c1 is
SELECT 1 from DUAL;
begin
for i in c1
loop
SQL_QUERY_RES := JSON_VALUE('{
我正在为下面的代码而挣扎:
DECLARE
TOTACID TAB_OF_ID(50);
RES NUMBER;
BEGIN
SELECT DISTINCT ID INTO TOTACID
FROM TABLE_B;
FOR indx IN 1 .. TOTACID.COUNT
LOOP
RES := F_IMPORT(TOTACID(indx));
DBMS_OUTPUT.PUT_LINE ('Moved ID ' || RES);
END LOOP;
END;
/
当我运行它时,它会失败,并出现错误:
错误报
我试图从一个在存储函数中打开的游标变量中获取数据,但是我总是得到“从序列中取出”错误消息。
以下是存储的函数:
CREATE OR REPLACE FUNCTION test_function RETURN SYS_REFCURSOR AS
p_recordset SYS_REFCURSOR;
BEGIN
OPEN p_recordset FOR SELECT '1' FROM DUAL UNION SELECT '2' FROM DUAL;
RETURN p_recordset;
END TEST_FUNCTION;
而Pro*C代码:
int m
我正在尝试编写一个获取当前日期并获取相关日志数据的查询。我写了一个嵌套查询,它可以在PL/SQL中工作,但不能在Python环境中工作。请给我建议。 PL/SQL的工作查询: SELECT * FROM TBLIRISVISITLOGS TLOG
WHERE TLOG.IVL_VISITDATE = (SELECT TO_CHAR(SYSTIMESTAMP,'DD-MON-YYYY') FROM DUAL) 当我在Python环境中执行这个查询时,它获取一个空表。
我遇到了一个奇怪的问题,我的实例化在这个verilog代码中不能工作。在altera的向导中创建了megafunction之后,我正在尝试使用.inst文件中给出的模板来实例化它。我有包含在项目中的megafunction的.v文件,并且已经为我的设计设置了数据in和outs到它们的适当变量。但是我不能得到这个错误之外的任何东西"Error (10170):Verilog HDL syntax at functionalblock.v.v(183) near text "(";期望";"“
else if是Always块中包含的更大的if,else if
在我正在处理的一个Oracle DB实例上,我观察到在重新编译包时出现了与正常情况不同的行为。
通常,在PL/SQL程序包重新编译后,第一次调用时会出现以下错误(如问题所示):
ERROR at line 1:
ORA-04068: existing state of packages has been discarded
ORA-04061: existing state of package body "PACKAGE.NAME" has been
invalidated
ORA-06508: PL/SQL: could not find program unit bein
我有一个根据特定日期检索数据的sql,我的Java应用程序调用plsql - Oracle来执行此操作。
新的请求是根据在屏幕上选择的多个日期来获取数据。
我尝试将这些日期格式化为逗号分隔的字符串,并将其作为pl/SQL的varchar输入参数‘i_date’进行传递。在Pl/SQL端,我尝试对where条件使用IN子句,但得到一个错误,即I_dates是无效的标识符。
问:我尝试使用多个日期条件单独运行sql,它工作得很好。
Select * from table1 where date in (‘2019-05-01’,‘2019-06-01’)工作正常。
但是plsql中带有日期输入参数
我已经使用SQLDeveloper开发了一个脚本。
它的基本结构是:
文件pl_sql.sql:
-- setting some options here, e.g. set linesize 32767 / set serveroutput on / etc.
declare
-- some variables declared here
begin
-- some SQL statements and PL/SQL code here
end;
这在SQLDeveloper中运行得很好。要在SQLPlus中运行这一功能,我必须编写如下包装器:
文件wrapper.sql:
@pl_sql.