C# 如何在另一个表中插入select查询的结果';s柱
我想将查询输出(两列)存储在C# 如何在另一个表中插入select查询的结果';s柱,c#,sql,oracle,C#,Sql,Oracle,我想将查询输出(两列)存储在R\u LOG表的DETAILTEXT列(单列)中 SELECT segment_name TABLE_NAME, SUM(bytes) table_size FROM USER_SEGMENTS WHERE SEGMENT_TYPE = 'TABLE' GROUP BY segment_name ORDER BY segment_name ASC; INSERT INTO R_LOG (DOMAINID, SOURCENAME, TERMINALID,u
R\u LOG
表的DETAILTEXT
列(单列)中
SELECT segment_name TABLE_NAME, SUM(bytes) table_size
FROM USER_SEGMENTS
WHERE SEGMENT_TYPE = 'TABLE'
GROUP BY segment_name
ORDER BY segment_name ASC;
INSERT INTO R_LOG (DOMAINID, SOURCENAME, TERMINALID,userid, DETAILTEXT)
VALUES (1, 'tables_job', 'TEST', 'GUEST',?????);
我的代码的这一部分工作得很好,但是我无法插入值
如果您需要
listag()
函数以及INSERT
语句,我们将不胜感激
SELECT segment_name TABLE_NAME, SUM(bytes) table_size
FROM USER_SEGMENTS
WHERE SEGMENT_TYPE = 'TABLE'
GROUP BY segment_name
ORDER BY segment_name ASC;
如果您得到ORA-01489:字符串连接的结果太长,则将包含listag()
函数的最后一列替换为
INSERT INTO R_LOG
SELECT 1, 'tables_job', 'TEST', 'GUEST',
LISTAGG('Table : '||segment_name||'- size: '|| SUM(bytes),', ')
WITHIN GROUP (ORDER BY segment_name)
FROM USER_SEGMENTS
WHERE SEGMENT_TYPE = 'TABLE'
GROUP BY segment_name
我猜您希望将目标列中的列
段\名称
和总和(字节)
连接起来。使用
选择
而不是值
:
RTRIM(XMLAGG(XMLELEMENT(e, 'Table : '||segment_name||'- size: '|| SUM(bytes), ',')
.EXTRACT('//text()') ORDER BY segment_name)
.GetClobVal(),
',')
您可以直接使用
插入[(列)]选择..
如下:
INSERT INTO R_LOG (DOMAINID, SOURCENAME, TERMINALID,userid, DETAILTEXT)
SELECT 1, 'tables_job', 'TEST', 'GUEST', segment_name || ' ' || SUM(bytes)
FROM USER_SEGMENTS
WHERE SEGMENT_TYPE='TABLE'
GROUP BY segment_name
ORDER BY segment_name ASC;
@请看一下,有什么问题吗。。?顺便说一句,DETAILTEXT
是CLOB类型,如果类型是VARCHAR2,那么它的长度是多少。。?
INSERT INTO R_LOG (
DOMAINID,
SOURCENAME,
TERMINALID,
USERID,
DETAILTEXT
)
SELECT 1, -- need to use some sequence here
'tables_job',
'TEST',
'GUEST',
SEGMENT_NAME || ' ' || SUM(BYTES)
FROM USER_SEGMENTS
WHERE SEGMENT_TYPE = 'TABLE'
GROUP BY SEGMENT_NAME;
-- Order by is not needed