第八十五章 SQL命令 UPDATE(四)示例

本節(jié)中的示例更新??SQLUser.MyStudents??表。下面的示例創(chuàng)建?


?SQLUser.MyStudents??表,并用數據填充它。因為這個示例的重復執(zhí)行會積累具有重復數據的記錄,所以它使用?


?TRUNCATE TABLE??在調用??INSERT??之前刪除舊數據。在調用?


?UPDATE??示例之前執(zhí)行這個示例:

ClassMethod Update1()
{
CreateStudentTable
s stuDDL = 5
s stuDDL(1) = "CREATE TABLE SQLUser.MyStudents ("
s stuDDL(2) = "StudentName VARCHAR(32),StudentDOB DATE,"
s stuDDL(3) = "StudentAge INTEGER COMPUTECODE {SET {StudentAge}="
s stuDDL(4) = "$PIECE(($PIECE($H,"","",1)-{StudentDOB})/365,""."",1)} CALCULATED,"
s stuDDL(5) = "Q1Grade CHAR,Q2Grade CHAR,Q3Grade CHAR,FinalGrade VARCHAR(2))"
s tStatement = ##class(%SQL.Statement).%New(0,"Sample")
s qStatus = tStatement.%Prepare(.stuDDL)
if qStatus=1 {
w "DDL %Prepare failed:"
d $System.Status.DisplayError(qStatus)
q
}
s rtn = tStatement.%Execute()
if rtn.%SQLCODE = 0 {
w !,"表創(chuàng)建成功"
} elseif rtn.%SQLCODE = -201 {
w "表已經存在, SQLCODE=",rtn.%SQLCODE,!
} else {
w !,"表創(chuàng)建失敗, SQLCODE=",rtn.%SQLCODE,!
w rtn.%Message,!
}
RemoveOldData
s clearit = "TRUNCATE TABLE SQLUser.MyStudents"
s qStatus = tStatement.%Prepare(clearit)
if qStatus=1 {
w "Truncate %Prepare failed:"
d $System.Status.DisplayError(qStatus)
q
}
s truncrtn = tStatement.%Execute()
if truncrtn.%SQLCODE = 0 {
w !,"表舊數據已經被刪除",!
} elseif truncrtn.%SQLCODE = 100 {
w !,"沒有數據可以刪除",!
} else {
w !,"truncate failed, SQLCODE=",truncrtn.%SQLCODE," ",truncrtn.%Message,!
}
PopulateStudentTable
s studentpop=2
s studentpop(1)="INSERT INTO SQLUser.MyStudents (StudentName,StudentDOB) "
s studentpop(2)="SELECT Name,DOB FROM Sample.Person WHERE Age <= 21"
s qStatus = tStatement.%Prepare(.studentpop)
if qStatus = 1 {
w "填充 %Prepare 失敗:"
d $System.Status.DisplayError(qStatus)
q
}
s poprtn = tStatement.%Execute()
if poprtn.%SQLCODE = 0 {
w !,"表填充成功",!
w poprtn.%ROWCOUNT," rows inserted"
} else {
w !,"表填充失敗, SQLCODE=",poprtn.%SQLCODE,!
w poprtn.%Message
}
}

可以使用下面的查詢來顯示這些示例的結果:

SELECT %ID,* FROM SQLUser.MyStudents ORDER BY StudentAge,%ID

下面的一些??UPDATE??示例依賴于其他??UPDAT??E示例設置的字段值;它們應該按照指定的順序運行。在下面的動態(tài)SQL示例中,?


?SET field=value UPDATE??修改選定記錄中的指定字段。在我的學生表中,7歲以下的孩子是不給分數的:

ClassMethod Update2()
{
s studentupdate=3
s studentupdate(1)="UPDATE SQLUser.MyStudents "
s studentupdate(2)="SET FinalGrade=NA "
s studentupdate(3)="WHERE StudentAge <= 6"
s tStatement = ##class(%SQL.Statement).%New(0,"Sample")
s qStatus = tStatement.%Prepare(.studentupdate)
if qStatus=1 {
w "%Prepare failed:"
d $System.Status.DisplayError(qStatus)
q
}
s uprtn = tStatement.%Execute()
if uprtn.%SQLCODE=0 {
w !,"表更新成功"
w !,"Rows updated=",uprtn.%ROWCOUNT," Final RowID=",uprtn.%ROWID
}

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://www.ezyhdfw.cn/yun/124825.html

相關文章

  • #yyds干貨盤點#安全管理制度管理辦法范文

    摘要:第四章安全管理制度發(fā)布第十條安全管理制度必須以正式文件的形式發(fā)布施行。第十一條安全管理制度由信息安全管理小組制訂,信息安全領導小組審批發(fā)布。第二十條安全管理制度的修改與廢止須經信息安全領導組織審批確認,信息安全管理部門備案。 字數 3610閱讀 760評論 0贊 3《xxxx安全管理制度匯編》****制度管理辦法****文...

    duan199226 評論0 收藏0
  • 五章-Java修飾符#yyds干貨盤點#

    摘要:修飾符包包的概述和使用其實就是文件夾作用對類進行分類管理包的定義格式格式包名多級包用分開范例帶包的類編譯和執(zhí)行手動建包按照以前的格式編譯文件手動創(chuàng)建包建立文件夾然后在下建立文件夾把文件放到包的最里面把文件放到下的這個文件夾下帶包 1 修飾符1.1 包1.1.1 包的概述和使用其實就是文件夾作用:對類進行分類管理...

    caspar 評論0 收藏0
  • 第八章-Java常用API#yyds干貨盤點#

    摘要:常用類概述包含執(zhí)行基本數字運算的方法沒有構造方法,如何使用類中的成員呢看類的成員是否都是靜態(tài)的,如果是,通過類名就可以直接調用。所有類都直接或間接的繼承該類。 1 常用API1.1 Math1.1.1 Math類概述Math包含執(zhí)行基本數字運算的方法沒有構造方法,如何使用類中的成員呢?看類的成員是否都是靜態(tài)的,...

    番茄西紅柿 評論0 收藏2637
  • #yyds干貨盤點#Redis中的事務原理與操作分享

    摘要:事務的定義事務是一組具備原子性操作的命令集合。事務的特點原子性。一致性指的是事務操作前后必須滿足業(yè)務約束。對監(jiān)聽的,取消監(jiān)聽事件。當事務中存在語法使用不當的情況時,事務會跳過當前的命令。 事務的定義事務是一組具備原子性操作的命令集合。在這一組命令中,要么全部執(zhí)行成功,要么全部執(zhí)行失敗。事務的特點原子性。原子性指...

    番茄西紅柿 評論0 收藏2637
  • #yyds干貨盤點# web安全day14:掃描與報破

    摘要:干貨盤點安全掃描與報破遠程桌面可以發(fā)現這個設備被掃描出來,它就是我們的我們還可以嘗試掃描它的操作系統(tǒng)。使用干貨盤點安全掃描與報破遠程桌面可以看到它運行的是或者或者,盡管不能完全一致,但是大致上為我們提供了準確的內容。 1、掃描技術掃描技術就是批量判斷局域網中有哪些設備在線、這些設備的哪些服務開放。我們可以使用ping工具測...

    番茄西紅柿 評論0 收藏2637

發(fā)表評論

0條評論

最新活動