通過EFCore呼叫GBase8s資料庫儲存過程
前置閱讀文章
《EFCore使用ADO.NET連線GBase8s資料庫示例》
《C#連線GBase8s資料庫在windows環境下使用步驟》
建立解決方案Demo工程,並引入相應的EFCore包
我們首先建立名字為 test的資料庫,並建立使用到的資料表和儲存過程。
示例1: 有兩個入參和兩個返回值的儲存過程
CREATE TABLE test:company (
id INTEGER ,
branck VARCHAR ( 100 ),
address VARCHAR ( 100 ),
city VARCHAR ( 100 ),
phone VARCHAR ( 100 )
)
create procedure testselect (id int ,city varchar ( 100 )) returning varchar ( 100 ), varchar ( 100 )
begin
define v_in int ;
define v_in2 VARCHAR ( 100 ) ;
let v_in = id+ 1 ;
let v_in2 = "Hello GBase8s" ;
insert into company values (id, '1' , '2' ,city, '3' ) ;
return 'value: ' || v_in,v_in2 ;
end
end procedure ;
控制檯輸出結果,與預期一致,兩個返回值
資料也insert成功。
示例程式碼:
GbsConnection conn = new GbsConnection(builder.ConnectionString);
conn.Open();
GbsCommand cmd = conn.CreateCommand();
cmd.CommandText = "testselect";
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Parameters.Add(new GbsParameter("@id", SqlDbType.VarChar));
cmd.Parameters["@id"].Value = 44;
cmd.Parameters.Add(new GbsParameter("@city", SqlDbType.Int));
cmd.Parameters["@city"].Value = "SH";
cmd.Parameters.Add("@RETURN_VALUE", "").Direction = ParameterDirection.ReturnValue;
cmd.ExecuteNonQuery();
GbsDataReader dr = (GbsDataReader)cmd.ExecuteReader();
while (dr.Read())
{
for (int i = 0; i < dr.FieldCount; i++)
{
Console.WriteLine(dr[i]);
}
}
示例2: 有一個出參的儲存過程。
create procedure call_out_param() returning varchar ( 100 )
begin
define v_in int ;
define v_rc varchar ( 100 ) ;
let v_in=- 1 ;
call out_param(p_out = v_in) returning v_rc ;
let v_rc = v_rc || ', value :' || v_in ;
return v_rc ;
end
end procedure ;
create procedure out_param ( out p_out int ) returning varchar ( 100 )
begin
define v_in int ;
let v_in = 1 ;
let p_out = v_in+ 1 ;
return 'value:' || v_in ;
end
end procedure ;
執行結果
與儲存過程執行結果一致。
示例程式碼
GbsConnection conn = new GbsConnection(builder.ConnectionString);
conn.Open();
GbsCommand cmd = conn.CreateCommand();
cmd.CommandText = "call_out_param";
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Parameters.Add("@RETURN_VALUE", "").Direction = ParameterDirection.ReturnValue;
cmd.ExecuteNonQuery();
GbsDataReader dr = (GbsDataReader)cmd.ExecuteReader();
while (dr.Read())
{
for (int i = 0; i < dr.FieldCount; i++)
{
Console.WriteLine(dr[i]);
}
}
示例3: 有兩個出參的儲存過程。
create procedure call_p4() returning varchar ( 20 ), varchar ( 20 )
begin
define v1 int ;
define v2 row (col1 int ,col2 varchar ( 20 )) ;
define rc varchar ( 20 ) ;
let v1 = 100 ;
let v2 = row ( 200 , "testReturnValue" ) ;
call p4(v1,v2) ;
return v2.col1,v2.col2 ;
end
end procedure ;
create procedure p4(v1 int , out v2 row (col1 int , col2 varchar ( 20 )))
begin
let v1 = 1111 ;
let v2 = row ( 2222 , "P4_Return" ) ;
end
end procedure ;
兩個出參的儲存過程,兩個出參使用的row方式。
能看出來,這是兩個返回結果值。儲存過程執行結果,也是兩個返回值。
示例程式碼
GbsConnection conn = new GbsConnection(builder.ConnectionString);
conn.Open();
GbsCommand cmd = conn.CreateCommand();
cmd.CommandText = "call_p4";
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Parameters.Add("@RETURN_VALUE", "").Direction = ParameterDirection.ReturnValue;
cmd.ExecuteNonQuery();
GbsDataReader dr = (GbsDataReader)cmd.ExecuteReader();
while (dr.Read())
{
for (int i = 0; i <= dr.FieldCount; i++)
{
Console.WriteLine(dr[i]);
}
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69993860/viewspace-2844241/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料庫儲存過程資料庫儲存過程
- 呼叫儲存過程儲存過程
- MySql資料庫——儲存過程MySql資料庫儲存過程
- 【資料庫】資料庫儲存過程(一)資料庫儲存過程
- linux呼叫儲存過程Linux儲存過程
- Winform呼叫儲存過程ORM儲存過程
- SQL 儲存過程裡呼叫另一個儲存過程SQL儲存過程
- jsp中呼叫儲存過程JS儲存過程
- mysql如何呼叫儲存過程MySql儲存過程
- Sqlsugar呼叫Oracle的儲存過程SqlSugarOracle儲存過程
- 使用儲存過程(PL/SQL)向資料庫中儲存BLOB物件儲存過程SQL資料庫物件
- 頭歌資料庫實驗六:儲存過程資料庫儲存過程
- sqlserver資料庫還原儲存過程指令碼SQLServer資料庫儲存過程指令碼
- 【SqlServer】清除過期資料的儲存過程SQLServer儲存過程
- MySQL儲存過程語句及呼叫MySql儲存過程
- Oracle 儲存過程分頁 + Sqlsugar呼叫Oracle儲存過程SqlSugar
- mssql 儲存過程呼叫另一個儲存過程中的結果的方法分享SQL儲存過程
- 金倉資料庫KingbaseES儲存過程 RETURN語句資料庫儲存過程
- ibatis呼叫oracle儲存過程(極簡版)BATOracle儲存過程
- mysql多次呼叫儲存過程的問題MySql儲存過程
- jdbc使用call呼叫儲存過程報錯JDBC儲存過程
- MyBatis(八) 資料庫BLOB讀寫、批量更新操作、儲存過程呼叫、分表、分頁MyBatis資料庫儲存過程
- 【故障公告】1個儲存過程拖垮整個資料庫儲存過程資料庫
- 儲存過程_造使用者資料儲存過程
- MySQL的寫入資料儲存過程MySql儲存過程
- Oracle儲存過程乾貨(一):儲存過程基礎Oracle儲存過程
- Springboot呼叫Oracle儲存過程的幾種方式Spring BootOracle儲存過程
- SQLSERVER儲存過程SQLServer儲存過程
- mysql 儲存過程MySql儲存過程
- unidac儲存過程儲存過程
- firedac儲存過程儲存過程
- Oracle儲存過程Oracle儲存過程
- 使用JavaScript和Python實現Oracle資料庫的儲存過程?JavaScriptPythonOracle資料庫儲存過程
- 恢復MySQL資料庫建立儲存過程是遇到錯誤MySql資料庫儲存過程
- Mysql使用儲存過程快速新增百萬資料MySql儲存過程
- SQL Server資料庫遠端更新目標表資料的儲存過程SQLServer資料庫儲存過程
- 儲存過程與儲存函式儲存過程儲存函式
- 通過 POI 將資料庫中的資料上傳至 OSS 物件儲存資料庫物件