Tables 的使用

write / 'select statement'.
tables ztabczw1.
select * from ztabczw1.
  write: / ztabczw1-sysid, ztabczw1-username, ztabczw1-age, ztabczw1-birthdate.
endselect.

skip.
write / 'select single statement'.
select single * from ztabczw1 where sysid = 1.
if sy-dbcnt > 0.
  write: / ztabczw1-sysid, ztabczw1-username, ztabczw1-age, ztabczw1-birthdate.
endif.

skip.
write / 'select table values into workarea'.
data wa type ztabczw1.
select * from ztabczw1 into wa.
  write: / wa-sysid, wa-username, wa-age, wa-birthdate.
endselect.

skip.
write / 'select table values into internal table'.
DATA ITAB like ztabczw1 OCCURS 10 WITH HEADER LINE.
data cDate(8) type c.
SELECT * FROM ztabczw1 INTO table ITAB.
loop at ITAB.
  cDate = ITAB-birthdate.
  write: / ITAB-sysid, ITAB-username, ITAB-age, cDate.
endloop.

SKIP.
write / 'select table value with where clause into internal table'.
*select * from ztabczw1 into table ITAB WHERE AGE BETWEEN 20 AND 24.
*select * from ztabczw1 into table ITAB WHERE username like 'CHUZHAOWE_'.
select * from ztabczw1 into table ITAB WHERE username in ('CHUZHAOWEI', 'LIYAN','XUXIUZHI') ORDER BY AGE SYSID DESCENDING.
 loop at ITAB.
  cDate = ITAB-birthdate.
  write: / ITAB-sysid, ITAB-username, ITAB-age, cDate.
endloop.
CLEAR ITAB[].
FREE ITAB.

*SKIP.
*write / 'INSERT values into table with work area'.
*wa-sysid = 4.
*wa-username = 'zhangsan'.
*wa-age = 26.
*wa-birthdate = '19851122'.
*insert inTO ztabczw1 values wa.
*write / 'insert successful.'.

*SKIP.
*write / 'INSERT values into table with internal table'.
*ITAB-sysid = 5.
*ITAB-username = 'lisi'.
*ITAB-age = 27.
*ITAB-birthdate = '19840507'.
*append ITAB.
*
*ITAB-sysid = 6.
*ITAB-username = 'wang''er'.
*ITAB-age = 27.
*ITAB-birthdate = '19840707'.
*append ITAB.
*
*insert ztabczw1 from TABLE ITAB accepting duplicate keys.
*write: / 'sy-subrc is ', sy-subrc.

skip.
write / 'Update table'.
update ztabczw1 set username = 'LISI' AGE = 29 WHERE SYSID = 5.
commit work and wait.
write: / 'sy-subrc is ', sy-subrc.

skip.
write / 'delete table'.
delete from ztabczw1 where sysid = 6.
commit work and wait.
write: / 'sy-subrc is ', sy-subrc.

skip.
write / 'database cursor'.
CLEAR ITAB[].
FREE ITAB.
data c1 type CURSOR.
open cursor c1 for select * from ztabczw1.
fetch next cursor c1 into wa.
while sy-subrc = 0.
  write: / wa-sysid, wa-username, wa-age, wa-birthdate.
  fetch next cursor c1 into wa.
endwhile.
*fetch next cursor c1 into wa.
*if sy-subrc = 0.
*  write: / wa-sysid, wa-username, wa-age, wa-birthdate.
*endif.
close cursor c1.

### 使用 `skip-grant-tables` 后仍遇到 1045 错误的原因分析 当使用 `--skip-grant-tables` 参数启动 MySQL 数据库时,理论上应该绕过权限验证机制,允许无密码访问数据库。然而,在某些情况下,即使启用了该参数,仍然可能遇到 1045 (Access denied for user 'root'@'localhost') 的错误。 #### 可能原因及解决方案 - **未正确应用 `--skip-grant-tables` 参数** 如果是在 Windows 平台上操作,则需通过命令行方式来指定此参数而不是编辑配置文件[^2]。对于 Linux 系统而言,建议先停止当前运行的服务实例并确保 `/etc/my.cnf` 或其他相应位置中的原有设置已被适当注释掉再追加新的启动项[^3]。 - **数据目录路径不匹配** 当前版本的 MySQL 要求在启用 `--skip-grant-tables` 时也应指明 `datadir` 参数指向实际存储表结构的位置;如果两者不符可能导致认证失败。 - **缓存问题或残留进程干扰** 尝试完全关闭所有与 MySQL 相关的服务和后台程序后再尝试重新启动带有特殊标志的服务实例可以排除潜在冲突因素的影响[^1]。 - **日志审查** 查看详细的错误日志有助于定位具体的问题所在。通常这些记录位于安装目录下的 log 文件夹或者由操作系统管理的日志系统中。注意是否有任何关于权限拒绝或其他异常情况的信息提示[^4]。 ```bash # 对于 CentOS 用户来说, 修改服务定义可能是必要的步骤之一. sudo vi /lib/systemd/system/mysql.service # 找到 [Service] 下面添加一行: ExecStart=/usr/sbin/mysqld --skip-grant-tables --user=mysql $MYSQLD_OPTS # 接着执行以下两条指令使更改生效: sudo systemctl daemon-reload sudo systemctl restart mysqld ``` 一旦成功进入无需身份验证的状态,请立即更新 root 密码以恢复正常的保护措施: ```sql FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值