cache資料庫入門教程

侃侃而談。句句是你發表於2021-01-01

1.建立csp檔案 
這裡寫圖片描述

2.儲存到dthealth/web/csp下

3.進入demo 1 網頁系統配置->選單管理,將它放到註冊建卡選單下,選單項名為培訓測試 
這裡寫圖片描述

4.找到剛才的網頁,允許通過為Demo Group 
這裡寫圖片描述

5.更新,註冊建卡里就有了這個csp 
這裡寫圖片描述

上一篇   IIS配置問題

1..MAC檔案是m語言,下面是test111.MAC

 
  1. test111

  2.  
  3. aa()

  4. w "abc"

  5. q 0

  • 最上面的名字和檔名一致
  • 然後是方法名
  • 檔名和方法名要頂頭寫,不能有空格 
    呼叫方式:DHC-APP>d aa^test111(),方法名有括號就帶括號

2..cls是類檔案,方法的寫法與上面不一樣

 
  1. ClassMethod aa()

  2. {

  3. w "abc"

  4. q 0

  5. }

  • 呼叫方式:DHC-APP>d ##class(web.test111).aa()

3.建立臨時Global

 
  1. DHC-APP>set ^TEMP=3//Global物理儲存到資料庫,terminal關了的話還會有,其他變數會消失

  2. DHC-APP>S ^TEMP("A")=1//設定節點

  3.  
  4. DHC-APP>s ^TEMP("B")=2

在Global裡可以搜尋到^TEMP 
這裡寫圖片描述

4.$h日期函式 
$ZDate 把$Horolog 格式的日期值按照指定格式顯示 
+號表示第一個非數字符號前的數字 
$ZDateH 是$ZDate 的反函式 
$ZTime 把$Horolog 格式的時間值按照指定格式顯示。 
$ZTimeH $ZTime 的反函式。

 
  1. DHC-APP>w $h

  2. 63802,58589

  3. DHC-APP>w $zd(63802)

  4. 09/07/2015

  5. DHC-APP>w $zd(63802,3)

  6. 2015-09-07

  7. DHC-APP>w +$h

  8. 63802

  9. DHC-APP>w $zd(+$h,3)

  10. 2015-09-07

  11. DHC-APP>w $zdh("2015-9-7",3)

  12. 63802

  13. DHC-APP>w $zdh("2024-9-7",3)-$zdh("2015-9-7",3)

  14. 3288

  15. DHC-APP>w $zt(58543)

  16. 16:15:43

  17. DHC-APP>w $zt(58543,2)

  18. 16:15

  19. DHC-APP>w $zt(58543,3)

  20. 04:15:43PM

  21. DHC-APP>w $zt($p($h,",",2))

  22. 17:07:50

5.$i 

對每次執行的global產生唯一一個值

 
  1. DHC-APP>w $i(^TEMP)

  2. 4

  3. DHC-APP>w $i(^TEMP)

  4. 5

  5. DHC-APP>w $i(^TEMP)

  6. 6

6.$e擷取字串

 
  1. DHC-APP>s a="abcdef"

  2.  
  3. DHC-APP>w $e(a,2)

  4. b

  5. DHC-APP>w $e(a,2,4)

  6. bcd

7.for迴圈1加到100

 
  1. ClassMethod testfor()

  2. {

  3. s m=0

  4. f i=1:1:100 d

  5. .s m=m+i

  6. s sum=m

  7. q sum

  8. }

  9. DHC-APP>w ##class(web.test111).testfor()

  10. 5050

  • 計算有多少個科室
 
  1. ClassMethod testfor()

  2. {

  3. s m=0

  4. s ctlocrowid=""

  5. //q和d,f和s空兩個空格

  6. f s ctlocrowid=$o(^CTLOC(ctlocrowid)) q:ctlocrowid="" d

  7. .s m=m+1

  8. s sum=m

  9. q sum

  10. }

  • 8.Terminal檢視Global 

zw ^STUDENT

9.buildIndices()重建索引指定的類

上一篇   IIS配置問題

1.建立Student表 
表名:t_Student RowID:St_RowID 
屬性:StCode,StName,StSexDR,StDob 
StSexDR為性別指向,指向一個CTSex性別表

 
  1. Class User.Student Extends %Persistent [ SqlRowIdName = St_RowID, SqlTableName = t_Student, StorageStrategy = StudentStorage ]

  2. {

  3.  
  4. Property StCode As %String [ Required, SqlColumnNumber = 2, SqlFieldName = st_code ];

  5.  
  6. Property StName As %String [ SqlColumnNumber = 3, SqlFieldName = st_name ];

  7.  
  8. Property StSexDR As CTSex [ SqlColumnNumber = 4, SqlFieldName = st_sex_dr ];

  9.  
  10. Property StDob As %Date [ SqlColumnNumber = 5, SqlFieldName = st_dob ];

  11.  
  12. Relationship ChildCourse As User.StuCourse [ Cardinality = children, Inverse = StudParRef ];

  13.  
  14. Index indexcode On StCode;

  15.  
  16. }

  • 2.建立Course表
 
  1. Class User.Course Extends %Persistent [ SqlRowIdName = C_RowID, SqlTableName = t_Course, StorageStrategy = CourseStorage ]

  2. {

  3.  
  4. Property Code As %String [ SqlColumnNumber = 2, SqlFieldName = C_Code ];

  5.  
  6. /// 課程描述

  7. Property Desc As %String [ SqlColumnNumber = 3, SqlFieldName = C_Desc ];

  8.  
  9. Property DateFrom As %Date [ SqlColumnNumber = 4, SqlFieldName = C_DateFrom ];

  10.  
  11. Property Active As %String(DISPLAYLIST = ",Yes,No", MAXLEN = 3, TRUNCATE = 1, VALUELIST = ",Y,N") [ SqlColumnNumber = 5, SqlFieldName = C_Active ];

  12.  
  13. Property UserDr As User.SSUser [ SqlColumnNumber = 6, SqlFieldName = C_User_Dr ];

  14.  
  15. }

3.學生選課表

 
  1. Class User.StuCourse Extends %Persistent [ SqlRowIdName = SC_RowID, SqlTableName = t_StuCourse, StorageStrategy = stucourse ]

  2. {

  3.  
  4. Index RowIDBasedIDKeyIndex On SCChildSub [ IdKey, PrimaryKey, Unique ];

  5.  
  6. Relationship StudParRef As User.Student [ Cardinality = parent, Inverse = ChildCourse, Required, SqlFieldName = SC_S_ParRef ];

  7.  
  8. Property SCChildSub As %Library.Numeric(SCALE = 0) [ InitialExpression = {$i(^STUDENT($p($s($d(initvalue):initvalue,1:%d(0)),$c(1)),"C",0))}, Required, SqlColumnNumber = 2, SqlFieldName = SC_ChildSub ];

  9.  
  10. Property SCCourseDr As User.Course [ SqlColumnNumber = 3, SqlFieldName = SC_Course_Dr ];

  11.  
  12. Property SCScore As %Float [ SqlColumnNumber = 4, SqlFieldName = SC_Score ];

  13.  
  14. }

  • 這裡寫圖片描述

這裡寫圖片描述 
這裡寫圖片描述 
這裡寫圖片描述 
這裡寫圖片描述 
注意:Rowid用表名.Rowid

4.查詢某個學生的選課情況

 
  1. Class web.StuCourse Extends %Persistent

  2. {

  3.  
  4. ClassMethod FindCourseByStud(stuno)

  5. {

  6.  
  7. Quit:stuno="" ""

  8. ;第二個空是返回值

  9. set stuId=$o(^STUDENTi(0,"No",stuno,""))

  10. set sub=0

  11. For set sub=$o(^STUDENT(stuId,"C",sub)) quit:sub="" d

  12. .set g=^STUDENT(stuId,"C",sub)

  13. .set CourseId=$p(g,"^",1)

  14. .set CourseDesc=$p(^COURSE(CourseId),"^",2)

  15. .set Score=$p(g,"^",2)

  16. .Write CourseDesc_" "_Score

  17. }

  18.  
  19. }

上一篇   IIS配置問題
1.我們已經建了一個person類,接下來就是表的儲存結構 
2.開啟Inspector,先輸入rowid名字為p_RowID,選class->Storage 
這裡寫圖片描述  
3.新建一個Storage,選擇CacheSQLStorage,在SqlIdExpression中輸入$i(^mdata(“Person”))是\$不是S 
意思是設定Rowid為自增,注意StremLocation的寫法 
這裡寫圖片描述  
4.Caché 以多維陣列儲存資料,所有資料都是儲存Global中。Global以如下形式表示:^名稱(下標1,下標2,下標3…)=值 
SET ^Y(3,6,7)=”third” 
SET ^Y(3,6,8)=”fourth” 
SET ^Y(3,6,7,8,4)=”fifth” 
SET ^Y(3,6,7,8,9)=”sixth” 
Global的樹狀結構如下: 
5.開啟SQL storage map建立索引,點選add,選擇map type為data,輸入global名,一般為類名的大寫 
這裡寫圖片描述  
6.點選左側data,選擇add新增glabal的三條資料,用“^”隔開 
這裡寫圖片描述  
7.點選左側Subscripts,輸入{p_RowID} 
這裡寫圖片描述  
8.點選左側Rowid,輸入如圖所示 
這裡寫圖片描述  
9.這時就建立了一個主索引,通過rowid可以查詢表資料 
這裡寫圖片描述  
^PERSON(1)=xiaoming^18^man 
^PERSON是global名,(1)表示rowid為1,後面的資料位置根據data裡的位置排列 
10.接下來,我們在建一個索引,在NewStorage1裡add一個索引,map type選擇index,輸入global名 
這裡寫圖片描述  
11.Subscripts建立如圖所示,這裡表示了global的四個層級,第一和第二層級是自己起的名字,方便理解global儲存的資訊,三四層是具體內容 
這裡寫圖片描述  
12.rowid如圖所示,是第四層 
這裡寫圖片描述  
13.這個以名字建立的索引我們以global來理解 
^PERSONi(0,”name”,”xiaoming”,1)=0

相關文章