我有一个我正在编写的.Net系统,它需要能够从数据库中检索oracle几何字段.在我的SQL语句中是否有任何方法可以将几何类型转换为字符串,以便我可以在.Net端处理它.目前我无法获取数据,因为它不是一个有效的数据类型放入我的OLEDB阅读器,因此它必须转换为数据库端.
select CS_BOUNDS from MDSYS.CS_SRS where SRID = 4326
Run Code Online (Sandbox Code Playgroud)
谢谢
我正在练习pl/sql程序.我有一个程序,即:示例:
begin
for i in 1..10
loop
dbms_output.put_line(i);
end loop;
end;
Run Code Online (Sandbox Code Playgroud)
输出是这样的:
1
2
3
.
.
.
10
Run Code Online (Sandbox Code Playgroud)
但是我必须在一行中打印所有数字,即(123.....10)我怎么能这样存档,我会得到输出是这样的:123...10
如果我在存储过程中使用FOR UPDATE子句应该何时"提交"?关闭打开的光标后或关闭打开的光标之前?以下是我正在使用的程序,我是以正确的方式做的吗?
CREATE OR REPLACE PROCEDURE Proc_UpdateCSClientCount(inMerid IN VARCHAR2,
outCliCount OUT NUMBER,
outretvalue OUT NUMBER)
AS
CURSOR c1 IS
SELECT CLIENT_COUNT
FROM OP_TMER_CONF_PARENT
WHERE MER_ID = inMerid
FOR UPDATE OF CLIENT_COUNT;
BEGIN
OPEN c1;
IF SQL%ROWCOUNT = 1 THEN
FETCH c1 INTO outCliCount;
outCliCount := outCliCount + 1;
UPDATE OP_TMER_CONF_PARENT
SET CLIENT_COUNT = outCliCount
WHERE CURRENT OF c1;
END IF;
outretvalue := 0;
CLOSE c1;
COMMIT;
EXCEPTION
WHEN no_data_found THEN
outretvalue := -1;
END;
Run Code Online (Sandbox Code Playgroud) 我在数据库列中有大写单词(NO,YES,FAIL)这些单词我需要选择这些列值为No,Yes,Fail(只有拳头字母大写和其他字母是小写)
p/l sql中是否有任何内置函数?
在PL/SQL方面我很新,我必须修改其他人的存储过程.
是否可以在select中间添加if语句?我尝试打开一个游标并从不同的表中选择一堆东西(不要问我为什么他们没有使用连接)并返回光标.我正在尝试做的事情是,有两列具有相似的数据,可以永远不会同时填充.因此,如果一个为null,则另一个应该有一个值,并且游标需要来自任何填充的值.那么...如果声明里面的选择?
我不会发布实际的代码,因为它会使你的眼球流血,但它看起来像......
open rc for
select l.data1 as ld1, l.data2 as ld2, b.data1 as bd1,
b.data2 as bd2, c.data1 as as c_d1, c.data2 as cd2
from tablel l, tableb b, tablec c
where blahblahblah
and c.data1 = [b.data3 if b.data4 is null, else b.data4]?
Run Code Online (Sandbox Code Playgroud)
如果可能的话,我似乎无法获得语法.
UPDATE employees
SET job_id = (SELECT job_id
FROM employees
WHERE employee_id = 205),
salary = (SELECT salary
FROM employees
WHERE employee_id = 205)
WHERE employee_id = 114;
Run Code Online (Sandbox Code Playgroud)
这是我一直在使用的查询.在这里我使用2个子查询,但它们具有相同的where条件..寻道时间加倍..有没有办法优化整个查询到单个子查询?
提前致谢
我正在尝试生成有关磁盘读取次数最多的查询的报告.生成的报告将作为电子邮件发送.我写了一些代码如下.当我包括前15个查询它工作正常但如果我增加hte计数我得到'数字或值错误'.我想这是因为我超过了某些数据类型限制但无法识别它.有人看到了这个问题吗?如何在没有这样的错误的情况下发送大量报告?
我有一个F_GENERATE_REPORT函数和P_SEND_REPORT_AS_EMAIL过程.P_SEND_REPORT_AS_EMAIL过程使用F_GENERATE_REPORT作为电子邮件的正文,如UTL_MAIL.SEND(message => F_GENERATE_REPORT(5)),其中5用于tOP 5.
程序P_SEND_REPORT_AS_EMAIL中的UTL_MAIL.SEND()行发生错误
谢谢大家.
clgenerated_html_markup是一个CLOB.
FOR cur_for_query IN (SELECT *
FROM (SELECT buffer_gets,rows_processed,executions,
fetches,hash_value,sql_text, disk_reads,
rank() over(ORDER BY disk_reads DESC) AS rank FROM v$sqlarea)
WHERE rank <= nquery_count)
LOOP
--dbms_output.put_line(counter);
--counter := counter + 1;
clgenerated_html_markup := clgenerated_html_markup || HTF.TABLEROWOPEN || CHR(10) ;
clgenerated_html_markup := clgenerated_html_markup || HTF.TABLEDATA(cur_for_query.rank,null,null,null,null,null,'class=tdData') || CHR(10) ;
clgenerated_html_markup := clgenerated_html_markup || HTF.TABLEDATA(cur_for_query.sql_text,null,null,null,null,null,'class=tdSQLText') || CHR(10) ;
clgenerated_html_markup := clgenerated_html_markup || HTF.TABLEDATA(TO_CHAR(NVL(cur_for_query.disk_reads,'')),'CENTER',null,null,null,null,'class=tdData') || CHR(10) ;
clgenerated_html_markup := clgenerated_html_markup || HTF.TABLEDATA(TO_CHAR(NVL(cur_for_query.buffer_gets,'')),'CENTER',null,null,null,null,'class=tdData') || CHR(10) ;
clgenerated_html_markup := …Run Code Online (Sandbox Code Playgroud) 我试图更新没有唯一索引的表中的行.所以,我选择了要更新的行的ROWID,现在我想更新这样的行:
UPDATE MYTABLE SET MYCOLUMN = 0 WHERE ROWID = "AAAIWWAAFAAApwDADR"
Run Code Online (Sandbox Code Playgroud)
MYCOLUMN的类型为NUMBER(1)
我收到错误: invalid identifier [SQL State=42000, DB Errorcode=904]
知道为什么吗?
我有一个使用声明游标的SQL文件,我使用@abc运行它,但它没有执行所有语句并等待而不返回命令提示符.声明游标语句后它没有继续.当我尝试在命令模式下运行declare cursor语句时,再次发生同样的问题.我只能在按Ctrl + C后返回SQL priompt.我对SQL世界很新.虽然这可能是一个基本错误,但我无法在任何网站找到解决方案.任何帮助是极大的赞赏.
SQL> DECLARE CURSOR id_cursor IS SELECT id FROM user_names WHERE dept_no = 1002
AND BITAND(flags, 4) = 4 AND time_created BETWEEN 1137974400 AND 1326067199;
2
3
4 ;
5
6
Run Code Online (Sandbox Code Playgroud) 我在MYSQL中使用表名"test",它在事务T1期间锁定,将在20分钟内完成.当我在这20分钟内通过另一个事务T2更新此表时.我得到一个例外: -
11:58:38,584 ERROR [STDERR] java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction
11:58:38,584 ERROR [STDERR] at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2928)
11:58:38,584 ERROR [STDERR] at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1571)
11:58:38,584 ERROR [STDERR] at com.mysql.jdbc.ServerPreparedStatement.serverExecute(ServerPreparedStatement.java:1124)
11:58:38,584 ERROR [STDERR] at com.mysql.jdbc.ServerPreparedStatement.executeInternal(ServerPreparedStatement.java:676)
Run Code Online (Sandbox Code Playgroud)
请给我解决方案,如何在不得到此异常的情况下执行此事务T2?
在mysql数据库中更新innodb_lock_wait_timeout的值是否正确以解决此异常.我期待着为这个问题找到任何有用的解决方案.
请问,是否可以访问 varray 中的单个值?
像newVariable := myArray(value2)--> 这会将数组中的第二个值分配给新变量...
我还需要这样的东西:
FOR CYCLE...
x++
newVariable(x) := myArray(value(x))
END FOR CYCLE
Run Code Online (Sandbox Code Playgroud)
是否可以?
谢谢,我是信息技术专业的学生,我正在努力解决这个问题。不知道去哪里看...
我需要在我的底部添加一个带有按钮的工具栏UITableView.我看到很多网站都说使用a UINavigationController就是这样,但有没有任何选项可以让我在这个内部做到这一点UITableViewController?
我正在试验Python和Oracle XML DB.我有一个表,其中包含XMLType列和Oracle 11g数据库中的ID列.XML列的存储模型是对象关系.有时我需要获取一个完整的XML文件,并且通常它超过4000个字符,所以我使用此查询来获取CLOB:
select t.representation.getclobval()
from myxmldocs t
where id=:documentId
Run Code Online (Sandbox Code Playgroud)
当我运行此查询时,输出包含额外的空格,XML元素之间的换行符和制表符在我插入的XML文档中绝对不存在.效果是某种格式化,因此输出如下所示:
<A>\n
\t<B></B>\n
\t\t<C>Some text</C>\n
\t\t<C>Some more text</C>\n
\t<B></B>\n
...
Run Code Online (Sandbox Code Playgroud)
等等.相当漂亮和可读,但为什么我得到它?它还混淆了我正在使用的额外空格上的其他库.
如果我删除getclobval(),我的Python客户端不会获得CLOB而是一个Object,我不知道如何处理它.
这似乎是一致的; 我使用sqlplus命令行客户端,并使用不同的XML架构创建其他表,然后查询它们.在我的原型的先前版本中,我使用XMLType列使用CLOB存储模型并且没有此问题.
我应该如何重写查询以获得带有XML文件的CLOB而无需额外的格式化?
更新:根据注释中的请求,这是我select dump(t.representation) from myxmldocs t where id=:documentId从命令行客户端运行查询的输出(替换当然:documentId与数据库中的实际现有ID):
DUMP(T.REPRESENTATION)
--------------------------------------------------------------------------------
Typ=58 Len=218: 32,156,148,1,0,0,0,0,80,193,223,20,0,0,0,0,216,15,47,21,0,0,0,0,
80,44,55,21,0,0,0,0,0,202,154,59,160,15,0,0,160,15,0,0,1,0,4,0,220,190,195,71,1,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,33,65,0,15,0,72,0,1,0,0,0,0,0,0,0,49,0
,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
,0,0,0,0,0,0,0,0
Run Code Online (Sandbox Code Playgroud)