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 添加到臨時表。
這樣, 這個臨時表相當於一個數據集, 或者一個數組,
你可以簡單而且反復的調用裡面的數據進行比較!