Chr☆s Kwok 的技术笔记

.NET, C#, WPF, WCF, WF, .NetCore & LINQ ... I know how it works because I know why it works ...

博客园 首页 新随笔 订阅 管理

1、DataGrid 用代码方式增加一列范例:

	bool isAdded = _mapDataGrid3.DataGrid.Columns.Contains(a => a.Header.ToString() == "医保钱包支付金额");
	DataGridColumn col = _mapDataGrid3.DataGrid.Columns.Where(a => a.Header.ToString() == "退费结算标志").FirstOrDefault();
	if (col != null && !isAdded)
	{
		int index = _mapDataGrid3.DataGrid.Columns.IndexOf(col);
		DataGridTextColumn item = new DataGridTextColumn();
		item.Header = "医保钱包支付金额";
		item.Binding = new Binding("byje15");
		item.Width = 110;
		_mapDataGrid3.DataGrid.Columns.Insert(index, item);
	}
	//StringBuilder sb = new StringBuilder();
	//foreach (var item in _mapDataGrid3.DataGrid.Columns)
	//{
	//    sb.Append($"{item.Header.ToString()}, ");
	//}
	//MessageHelper.ShowDialog(sb.ToString(), "检查DataGrid3列头");

2、ORACLE 数据表插入记录后返回(自增长)主键的值范例:
(1)C# 代码:

	private class NUMBER_Type
	{
		public int ORDERREQUESTID { get; set; }
	}

	public int CreateConsulationRelatedOrderRequest(DtoConsultation dto, int clinicItemId)
	{
		int ret = -1;
		using (DbConnection cn = DapperHelper.CrateConnection(Dbs.IP))
		{
			OracleDynamicParameters param = new OracleDynamicParameters();
			param.Add("v_EnconterID", dto.EncounterId);
			param.Add("v_OrganizationID", dto.RequestOrganizationId);
			param.Add("v_AuthorID", dto.RequestEmployeeId);
			param.Add("v_ClinicItemId", clinicItemId);
			param.Add("CV_1", OracleDbType.RefCursor, ParameterDirection.Output);
			var result = DapperHelper.ExecuteSP<NUMBER_Type>(cn, "POOR.CreateConsulationRelatedOrderRequest", param);
			if (result.Count > 0)
			{
				ret = result.First().ORDERREQUESTID;
			}
		}
		return ret;
	}

(2)数据库存储过程:

CREATE OR REPLACE PROCEDURE POOR.CreateConsulationRelatedOrderRequest(v_EnconterID NUMBER, v_OrganizationID NUMBER, v_AuthorID NUMBER, v_ClinicItemId NUMBER, CV_1 OUT SYS_REFCURSOR)
AS
v_Id NUMBER(10, 0);
v_PersonID NUMBER;
v_MaxOrdinal NUMBER;
/* =========================================================================================
 20XX-XX-XX   CREATED
 ========================================================================================= */
BEGIN
 SELECT nvl(a.personid, -1) into v_PersonID from prpa.encounter a where a.encounterid=v_EnconterID;
 SELECT nvl(MAX(a.ordinal),1) into v_MaxOrdinal from poor.orderrequest a where a.isdeleted=0 and a.periodkind=1 and a.orderkindcodeid=4 and a.encounterid=v_EnconterID;

 INSERT INTO POOR.ORDERREQUEST (PERIODKIND, ORDERKINDCODEID, ORDERSUBKINDCODEID, ORDERCHILDKINDCODEID, ORDINAL, PARENTID, PERSONID, ENCOUNTERID, AUTHORID, LATESTMODIFIERID, OWNERORGANIZATIONID, PLACERGROUPID, STARTDATE, ENDDATE, CONSUMABLECODEID, CONSUMABLEID, ROUTEID, METHODID, FREQUENCYID, REASON, NOTE, ASREQUIRED, ASREQUIREDCONDITION, EXECTIMESERIES, FIRSTDAYEXECTIMESERIES, LASTDAYEXECTIMESERIES, NEXTCOLLATEDATE, REPEATNUMBER, DOSE, ADMINDOSE, ISEMERGENCY, STATUSCODEID, ORDERVERSION, ISDELETED, CAREACTIVITYID, COLLATEDATE, ISSUPPLEMENT, SOURCEORDERREQUESTID, CREATEKINDCODEID, TREATINGTEAMID, NURSETEAMID, PLANSTOPDATE, DAYS, AMOUNT, WARNFLAG, REQUESTPERFORMTIME, ROWVERSION, INPUTDATETIME, NUMBERVERSION, PLANLASTSTOPEXECTIMESERIES, PAYMENTRATIO, LEFTRIGHTPOSITIONCODEID, RELATIONSHIPID, ATTACHTAGCODEID, HASPRINTEDPOS, ALLOWCANCELCODE, LATESTCOLLATEDON, LATESTCOLLATEDBY, CALCFREQCODEID, TYPECODEID, ISNURSING, SUBSTANCENAME, ORDERTEXT, DUBSIGNDOSAGENOTE, RECEIVINGINFOID)
 VALUES(1, 4, 0, 2, v_MaxOrdinal+1, -1, v_PersonID, v_EnconterID, v_AuthorID, v_AuthorID, v_OrganizationID, -1, sysdate, sysdate, 7, v_ClinicItemId, -1, -1, -1, null, null, 0, null, '08:00', '08:00', null, trunc(sysdate), 1, 1.0, 1.0, 0, 0, 0, 0, -1, trunc(sysdate), 0, -1, 0, null, null, null, 1, 0.0, null, null, sysdate, sysdate, 1, null, null, -1, null, null, null, null, null, null, null, null, 0, null, null, null, null) RETURNING ORDERREQUESTID INTO v_Id;

 OPEN CV_1 FOR
 SELECT v_Id AS ORDERREQUESTID FROM dual;

 EXCEPTION
 WHEN others THEN
   dbms_output.put_line('SQL CODE:'||sqlcode||chr(10)||
                           sqlerrm||chr(10)||
                           dbms_utility.format_error_backtrace());
   rollback;
end;

 3、ORACLE 数据表是否存在记录及伪列ROWNUM的使用范例:
PS:一定要排序完才使用ROWNUM查询条件才能确保返回正确结果

declare
v_cnt NUMBER;
v_isReleased NUMBER(1, 0); 
begin 
  v_isReleased := 0;
  SELECT COUNT(1) INTO v_cnt from DATA.MEDICALRECORDRELEASELOG where ENCOUNTERID=1338521 and ISDELETED=0;
  IF v_cnt > 0 THEN
    select a.ISRELEASED into v_isReleased from (select * from DATA.MEDICALRECORDRELEASELOG i 
    where ENCOUNTERID=1337801 and ISDELETED=0 ORDER BY OPERATEDON DESC) a where ROWNUM=1;
  END IF;
    
  DBMS_OUTPUT.PUT_LINE('OUT_RETURN = "' || to_char(v_isReleased) || '"');
end;

 

posted on 2025-10-23 17:27  Chr☆s  阅读(13)  评论(0)    收藏  举报