声明一个T1%ROWTYPE,插入T1 表后,T1.col1的默认值不起作用

大饼Ora 2017-05-24 05:14:29
在sp中声明一个变量,如 P_TEST T1%ROWTYPE,
在while中处理数据,
最后把P_TEST 插入 到T1表,
T1表有一个同步标志位字段col1,默认值是0
在while循环中没有给P_TEST.col1赋值,
但是把P_TEST 插入 到T1表后,col1还是空值,不是默认值0,
请问是为什么?必须手动P_TEST.col1 := 0 吗?
...全文
255 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
大饼Ora 2017-05-26
  • 打赏
  • 举报
回复
引用 4 楼 qq_38884602 的回复:
那么你通过循环读取插入 ,是不会使用默认值的。
是不是声明 P_TEST T1%ROWTYPE 这个变量的时候, P_TEST T1.col1就是null
大饼Ora 2017-05-25
  • 打赏
  • 举报
回复
引用 2 楼 jdsnhan 的回复:
因为循环中,你读取到的值是空值,不是0.
那寻常的insert,col1没有在values或select中赋值,不是也会给默认值吗?
jdsnhan 2017-05-25
  • 打赏
  • 举报
回复
因为循环中,你读取到的值是空值,不是0.
qq_38884602 2017-05-25
  • 打赏
  • 举报
回复
引用 3 楼 q12344566789 的回复:
[quote=引用 2 楼 jdsnhan 的回复:] 因为循环中,你读取到的值是空值,不是0.
那寻常的insert,col1没有在values或select中赋值,不是也会给默认值吗?[/quote] 如果你读取的一行col1列的值类似这样 null 那么你通过循环读取插入 ,是不会使用默认值的。
卖水果的net 2017-05-24
  • 打赏
  • 举报
回复
请问是为什么?必须手动P_TEST.col1 := 0 吗? 是的

17,078

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧