plsql数组
A. PLsql:如何读取参数数组
DECLARE @Test VARCHAR(50)
DECLARE @ArgsTable TABLE
(
Arg VARCHAR(50)
)
SET @Test = 'ASD,FGH,JKL,YUI'
DECLARE @TempIndex INT
WHILE @Test LIKE '%,%'
BEGIN
SET @TempIndex = CHARINDEX(',',@Test) --取出,位置
INSERT INTO @ArgsTable(Arg)
SELECT SUBSTRING(@Test,0,@TempIndex) --截取第一个参数
SET @Test = RIGHT(@Test,LEN(@Test) - @TempIndex) --使 @Test 取截后的字符串
IF @Test NOT LIKE '%,%' --如果是最后一个,加入列表并退出
BEGIN
INSERT INTO @ArgsTable(Arg)
SELECT @Test
BREAK;
END
END
SELECT * FROM @ArgsTable
B. 这是plsql代码块变长数组中一串数字的排序,看不懂求解
1,打开PLSQL Developer客户端,进入登录界面
2,输入用户名、密码和数据库,进行数据库服务器
3,很多时候,不知道数据库的地址,填写错误后,登录会提示错误
4,一般的数据库服务器填写格式为服务器的IP地址,再加上“/”,再加上数据库名
5,如果要连接本地的Oracle数据的话,可以直接填写本地的数据库名。比如上图中的aaa就是本地数据库名。
6,连接成功后,在首页左中间的部分,就会看到数据库中的Tables选项,点击后,会出现数据库中已经存在的表
C. 在plsql中如何将一个数组使用到sql中的查询条件中
select
object_name
bulk
collect
into
str_var,首先你这边select的三个字段,中间也没逗号,这语法有问题,在有你如果想把查询到的结果放在下一个查询的where条件里面,为什么还要用select
xxx
into
xx这样的写法,你完全可以直接where
table_name
in(select
a
from
d)这样子来弄
D. 请教在PLSQL中声明一个TALBE类型的数组,怎么查询其中是否包含某个值
好像没什么好办法,还有一种就是使用临时表,把数组导到临时表中然后在临时表里查询,但导入过程也是需要循环。
E. oracle的plsql怎么储存数组
TYPE MTBL IS TABLE OF NVARCHAR2(256) INDEX BY BINARY_INTEGER;
这就是定义了一个下标为整数的字符串类型配列的类型。使用的时候
TBL MTBL;TBL就是配列对象。
TYPE MMTBL IS TABLE OF NVARCHAR2(256) INDEX BY BINARY_INTEGER;
TYPE MTBL IS TABLE OF MMTBL IS INDEX BY BINARY_INTEGER;
这种一层套一层的,就类似java里的二维数组。同理往下推。
F. PLSQL中怎样使用Array
PLSQL中的数组是声明配列
TYPE MTBL IS TABLE OF NVARCHAR2(256) INDEX BY BINARY_INTEGER;
这就是定义了一个下标为整数的字符串类型配列的类型。使用的时候
TBL MTBL;TBL就是配列对象。
TYPE MMTBL IS TABLE OF NVARCHAR2(256) INDEX BY BINARY_INTEGER;
TYPE MTBL IS TABLE OF MMTBL IS INDEX BY BINARY_INTEGER;
这种一层套一层的,就类似java里的二维数组。同理往下推。
G. 请教pl/sql中怎样定义和使用数组
数组是在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来的一种形式。 一维数组的定义 举个例子 int a[ 3]={1,2,3,4}; 二维数组的定义方法较灵活 可以按行分段也可以连续定义 如 int a[5][3]={ {80,75,92},{61,65,71}...
H. c#向pl/sql传送数组参数怎么解决
//C#例
public void Get_PrecereData()
{
OracleConnection connection = null;//Connection
OracleCommand oraCommand = new OracleCommand();
OracleParameter paramId = null;
OracleParameter paramTbl = null;
OracleParameter paramCur = null;
OracleRefCursor pInfoCur = null;
DataSet dtRtn = new DataSet();
//数据库连接
connection = new OracleConnection("User Id=scott;Password=tiger;Data Source=oracle");
connection.Open();
oraCommand.Connection = connection;
oraCommand.Parameters.Clear();
// 存储过程 设定
oraCommand.CommandText = "PKG_TEST.PROC_GET_DATA";
oraCommand.CommandType = System.Data.CommandType.StoredProcere;
// 输入输出参数设定
// Varchar2型
paramId = oraCommand.Parameters.Add( "I_ID", OracleDbType.Varchar2, ParameterDirection.Input );
// 数组类型参数设定
paramTbl = oraCommand.Parameters.Add( "I_TBL", OracleDbType.Varchar2, ParameterDirection.Input );
// 将CollectionType 设为 PLSQLAssociativeArray
paramTbl.CollectionType = OracleCollectionType.PLSQLAssociativeArray;
//cursor 类型参数设定
paramCur = oraCommand.Parameters.Add("O_CUR", OracleDbType.RefCursor, ParameterDirection.Output );
//设置参数数组的大小
//注意:参数的Value 属性和ArrayBindSize 属性必须为元素个数相同的数组,且个数等于参数的Size 属性
int[] bindSize = new int[10];
string[] tblData = new string[10];
for(int ii = 0; ii < 10; ii++)
{
tblData[ii] = ii.ToString();//数值
bindSize[ii] = 10;//数值的大小
}
//数组参数设定
paramTbl.Value = tblData;
paramTbl.Size = 10;
paramTbl.ArrayBindSize = bindSize;
//存储过程执行
oraCommand.ExecuteNonQuery();
//out的cursor值的读取
using(OracleDataAdapter da = new OracleDataAdapter())
{
if(paramCur.Value != System.DBNull.Value)
{
pInfoCur = (OracleRefCursor)paramCur.Value;
da.Fill(dtRtn, pInfoCur);
}
//取得记录数
Console.WriteLine("the number of record count is {0}", dtRtn.Tables[0].Rows.Count);
}
oraCommand.Dispose();
connection.Close();
connection.Dispose();
}
I. PLSQL 定义含有多个字段的数组类型变量
可以把用户的多个信息封装成一个自定义的属性。
假设我们的用户含有:姓名,年龄以及性别属性
自定义属性:
TYPE user_info_type IS RECORD(
user_name VARCHAR2(20),
user_age NUMBER(3),
user_sex VARCHAR2(5));1234
然后我们就可以直接使用这个属性来创建数组了!
TYPE user_info_arr_type IS TABLE OF user_info_type INDEX BY BINARY_INTEGER;
user_info_arr user_info_arr_type;12
完整的测试代码如下:
-- PLSQL 定义含有多个字段的数组类型变量
DECLARE TYPE user_info_type IS RECORD(
user_name VARCHAR2(20),
user_age NUMBER(3),
user_sex VARCHAR2(5)); TYPE user_info_arr_type IS TABLE OF user_info_type INDEX BY BINARY_INTEGER;
user_info_arr user_info_arr_type;BEGIN
user_info_arr(0).user_name := '张三';
user_info_arr(0).user_age := 19;
user_info_arr(0).user_sex := '男';
user_info_arr(1).user_name := '李菁菁';
user_info_arr(1).user_age := 23;
user_info_arr(1).user_sex := '女'; FOR i IN 0 .. 1
LOOP
dbms_output.put_line('User Name:' || user_info_arr(i).user_name);
dbms_output.put_line('User Age:' || user_info_arr(i).user_age);
dbms_output.put_line('User Sex:' || user_info_arr(i).user_sex); END LOOP;END;
输出结果:
User Name:张三
User Age:19
User Sex:男
User Name:李菁菁
User Age:23
User Sex:女
这样我们就创建了一个含有多个字段的数组类型变量了!
J. plsql中如何实现这种需求IN相关,数组相关,高分
你声明一个临时表, 把需要的字段加进去,
然后用select语句吧需要包含在IN 里面的内容用insert 添加到临时表。
这样, 这个临时表相当于一个数据集, 或者一个数组,
你可以简单而且反复的调用里面的数据进行比较!