我正在制定供应商的帐单生成计划,其中调用库程序代码将数据插入表t_job,该表存储一些重要作业的记录,如采购订单生成等。
问题是这个用于将数据插入到表t_job
中的库代码可以从许多不同的4ge程序和不同用户调用,但我面临着新创建用户的一个特殊问题。
我收到错误"无法在列中插入null(t_job.username)"对于这个用户。
处理将数据插入t_job的程序有一些代码,我觉得这个问题值得一提。
select username into _user from sysusers where username = user
insert into t_job values(_user,
_job_key1,
_job_key2,
_cd,
today,
_time)
它让我疯了为什么只有在这种情况下t_jobs的用户名显示为null。
我查看了sysuser数据库中的sysusers表,发现其中有两行,如下所示:
username informix
usertype D
priority 9
password
defrole
username public
usertype C
priority 5
password
defrole
在这方面的任何帮助都受到高度重视。
答案 0 :(得分:0)
鉴于sysusers
表只有两行,SELECT
语句只会在_user
运行代码时设置变量informix
。
推荐修复:
INSERT INTO t_job VALUES(USER, _job_key1, _job_key2, _cd, TODAY, _time)
名称USER
和TODAY
是内置的零参数函数(关键字),它返回当前用户名和当前日期。随着_user
更改为USER
,您不再需要伪造SELECT
。您可能根本不需要_user
变量。我也会对_time
变量持怀疑态度,但你必须更加努力地替换它(CURRENT HOUR TO MINUTE
应该完成这项工作)。