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

本节中的示例更新​​SQLUser.MyStudents​​表。下面的示例创建​


​SQLUser.MyStudents​​表,并用数据填充它。因为这个示例的重复执行会积累具有重复数据的记录,所以它使用​


​TRUNCATE TABLE​​在调用​​INSERT​​之前删除旧数据。在调用​


​UPDATE​​示例之前执行这个示例:

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 !,"表创建成功"
} elseif rtn.%SQLCODE = -201 {
w "表已经存在, SQLCODE=",rtn.%SQLCODE,!
} else {
w !,"表创建失败, 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示例设置的字段值;它们应该按照指定的顺序运行。在下面的动态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
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/124825.html

相关文章

  • #yyds干货盘点#安全管理制度管理办法范文

    摘要:第四章安全管理制度发布第十条安全管理制度必须以正式文件的形式发布施行。第十一条安全管理制度由信息安全管理小组制订,信息安全领导小组审批发布。第二十条安全管理制度的修改与废止须经信息安全领导组织审批确认,信息安全管理部门备案。 字数 3610阅读 760评论 0赞 3《xxxx安全管理制度汇编》****制度管理办法****文...

    duan199226 评论0 收藏0
  • 五章-Java修饰符#yyds干货盘点#

    摘要:修饰符包包的概述和使用其实就是文件夹作用对类进行分类管理包的定义格式格式包名多级包用分开范例带包的类编译和执行手动建包按照以前的格式编译文件手动创建包建立文件夹然后在下建立文件夹把文件放到包的最里面把文件放到下的这个文件夹下带包 1 修饰符1.1 包1.1.1 包的概述和使用其实就是文件夹作用:对类进行分类管理...

    caspar 评论0 收藏0
  • 第八章-Java常用API#yyds干货盘点#

    摘要:常用类概述包含执行基本数字运算的方法没有构造方法,如何使用类中的成员呢看类的成员是否都是静态的,如果是,通过类名就可以直接调用。所有类都直接或间接的继承该类。 1 常用API1.1 Math1.1.1 Math类概述Math包含执行基本数字运算的方法没有构造方法,如何使用类中的成员呢?看类的成员是否都是静态的,...

    番茄西红柿 评论0 收藏2637
  • #yyds干货盘点#Redis中的事务原理与操作分享

    摘要:事务的定义事务是一组具备原子性操作的命令集合。事务的特点原子性。一致性指的是事务操作前后必须满足业务约束。对监听的,取消监听事件。当事务中存在语法使用不当的情况时,事务会跳过当前的命令。 事务的定义事务是一组具备原子性操作的命令集合。在这一组命令中,要么全部执行成功,要么全部执行失败。事务的特点原子性。原子性指...

    番茄西红柿 评论0 收藏2637
  • #yyds干货盘点# web安全day14:扫描与报破

    摘要:干货盘点安全扫描与报破远程桌面可以发现这个设备被扫描出来,它就是我们的我们还可以尝试扫描它的操作系统。使用干货盘点安全扫描与报破远程桌面可以看到它运行的是或者或者,尽管不能完全一致,但是大致上为我们提供了准确的内容。 1、扫描技术扫描技术就是批量判断局域网中有哪些设备在线、这些设备的哪些服务开放。我们可以使用ping工具测...

    番茄西红柿 评论0 收藏2637

发表评论

0条评论

最新活动