我有一个包含数值的表,我想将这些值提取到数组中。我能这样做吗?是否有允许我这样做的功能?我是pl / sql的新手,我不知道。谢谢!
答案 0 :(得分:2)
public class CustomControl : Control //here base class with context etc
{
public override void Render()
{
using (var control = _context.Div())
{
input.AddAttribute(HtmlTextWriterAttribute.Content, "Div");
}
}
}
答案 1 :(得分:0)
假设您的表是YOUR_TABLE,并且列是YOUR_COLUMN,您可以使用VARRAY数组,如下所示:
DECLARE
TYPE t_ARR IS VARRRAY(1000000) OF NUMBER;
varr_col T_ARR;
BEGIN
varr_col := t_ARR();
FOR i IN (SELECT YOUR_COLUMN
FROM YOUR_TABLE)
LOOP
varr_col.EXTEND;
varr_col (1) := i.YOUR_COLUMN;
END LOOP;
EXCEPTION
---
END;
这将创建可变大小的数组。对于FOR LOOP的每次迭代,它将数组扩展一个并插入值。因此,就特定列的行数而言,它是灵活的。
答案 2 :(得分:0)
是的,你可以使用LOOP方法,但我更喜欢BULK COLLECT INTO
。
在我的小例子之下:
SET SERVEROUTPUT ON
SET FEEDBACK OFF
CLEAR
DECLARE
TYPE TT_ARR IS TABLE OF NUMBER;
V_NUM_ARR TT_ARR;
BEGIN
V_NUM_ARR := TT_ARR(); --<-- explicit initializing
-- LOOP approach:
FOR L_I IN (SELECT 1 + ROUND(DBMS_RANDOM.VALUE() * 10) COL_1
FROM DUAL
CONNECT BY LEVEL < 20) LOOP
V_NUM_ARR.EXTEND;
V_NUM_ARR(V_NUM_ARR.LAST) := L_I.COL_1;
END LOOP;
DBMS_OUTPUT.PUT_LINE('Collection size : ' || TO_CHAR(V_NUM_ARR.COUNT));
-- BULK COLLECT INTO approach (preferred)
SELECT 1 + ROUND(DBMS_RANDOM.VALUE() * 10) COL_1 BULK COLLECT
INTO V_NUM_ARR
FROM DUAL
CONNECT BY LEVEL < 20;
DBMS_OUTPUT.PUT_LINE('Collection size : ' || TO_CHAR(V_NUM_ARR.COUNT));
END;
/