T-SQL编程实践:课堂加分逻辑与批处理解析

需积分: 3 1 下载量 194 浏览量 更新于2024-08-15 收藏 2.81MB PPT 举报
"这篇资料主要涉及的是T-SQL编程,特别是关于课堂综合练习的答案,包括了数据处理和逻辑控制语句的应用。" 在T-SQL编程中,我们首先看到的是查询原始成绩的语句 `SELECT * FROM Student_course`,这是基本的SQL查询,用于获取`Student_course`表中的所有数据。接着,`SELECT AVG(Student_grade) FROM Student_course` 计算了这些成绩的平均值,这是统计分析中的平均函数。 接下来的部分展示了如何在T-SQL中声明并使用变量。`DECLARE @avg INT` 声明了一个整型变量`@avg`,用于存储平均分。然后,一个无限循环(`WHILE(1=1)`)被用来执行一系列操作,直到满足特定条件为止。在这个循环中,`UPDATE`语句被用来修改`Student_course`表中的成绩,`CASE`语句则根据不同的成绩范围进行加分操作,以提升学生的分数。最后,通过`IF`语句判断当前的平均分是否达到或超过85,如果达到则通过`BREAK`退出循环。 这段代码展示了T-SQL中的逻辑控制结构,如`WHILE`循环和`IF`条件判断,以及如何在循环中更新数据并根据条件终止循环。同时,`CASE`语句的使用体现了条件分支的处理,可以根据不同的条件执行不同的操作。 批处理是T-SQL中的一个重要概念,允许一次性发送多条SQL语句到服务器进行执行。批处理以`GO`作为分隔符,例如:`USE Student; GO; SELECT * FROM Teachers WHERE SUBSTRING(Teacher_name,1,1)='王'; GO`。这种方式提高了执行效率,因为它将多个语句编译成一个执行计划,但如果批处理中的某个语句出错,整个批处理可能会被取消。 在批处理示例中,可以看到如何组合不同的SQL操作,如查询(`SELECT`)、更新(`UPDATE`),并使用`GO`来分隔不同的操作集。批处理是提高数据库管理效率的有效工具,尤其是在执行逻辑相关的多步操作时。 这个资料涵盖了T-SQL的基本语法,包括查询、变量声明、逻辑控制语句以及批处理的使用,这些都是在SQL Server环境下进行数据库管理和开发必备的知识点。通过这样的练习,学习者可以深入理解T-SQL如何用于处理和控制数据。

编译报错 CREATE OR REPLACE PROCEDURE get_dev_cs IS sql_tem VARCHAR2(4000); v_dt NUMBER; BEGIN ----om_subscriber_yyyymm sql_tem := 'truncate table ycyd.Subscriber_cs'; EXECUTE IMMEDIATE sql_tem; FOR v_dt IN (SELECT to_number(substr(table_name, '15')) db FROM sys.all_tables a WHERE a.owner = upper('jour1') AND a.table_name LIKE upper('om_subscriber_202___') AND substr(table_name, '15') > 202205) LOOP -- 循环往b里添加数据 sql_tem := ' INSERT INTO ycyd.Subscriber_cs SELECT a.order_id, a.done_date, a.cust_id, a.subscriber_ins_id, a.access_num FROM jour1.om_subscriber_' || v_dt.db || ' a WHERE a.action = 0 AND a.is_usim = 1'; -- 执行sql EXECUTE IMMEDIATE sql_tem; END LOOP; ----om_order_yyyymm sql_tem := 'truncate table ycyd.order_cs'; EXECUTE IMMEDIATE sql_tem; COMMIT; FOR v_dt IN (SELECT to_number(substr(table_name, '15')) db FROM sys.all_tables a WHERE a.owner = upper('jour1') AND a.table_name LIKE upper('om_subscriber_202___') AND substr(table_name, '15') > 202205) LOOP -- 循环往b里添加数据 sql_tem := ' INSERT INTO ycyd.order_cs SELECT order_id, dev_id FROM JOUR1.om_order_' || v_dt.db || ' b'; -- 执行sql EXECUTE IMMEDIATE sql_tem; END LOOP; COMMIT; ---dev sql_tem := 'truncate table ycyd.yd_order_dev_3056'; EXECUTE IMMEDIATE sql_tem; -- 添加数据 sql_tem := ' INSERT INTO ycyd.yd_order_dev_3056 SELECT a.order_id, a.done_date, a.cust_id, a.subscriber_ins_id, a.access_num, c.dev_id, c.dev_name, d.code, c.dev_busi_code, c.corp_org, c.company_name, c.department_code, c.department_name, c.remarks FROM ycyd.Subscriber_cs a LEFT JOIN ycyd.order_cs b ON a.order_id = b.order_id LEFT JOIN params1.sec_developer c ON b.dev_id = c.dev_id LEFT JOIN (SELECT DISTINCT oo.code,s.bill_id FROM params1.sec_operator oo, params1.sec_staff s WHERE s.staff_id = oo.staff_id AND oo.state = 1 AND oo.staff_id NOT in ('123402933','123395474','123404209')) d ON c.dev_phone = d.bill_id WHERE c.corp_org = 3056'; -- 执行sql EXECUTE IMMEDIATE sql_tem; COMMIT; END get_dev_cs;

2023-07-14 上传
2023-06-13 上传