2016-06-20 13 views
1

私は、購入注文の生成などの重要な仕事のレコードを格納するテーブルt_jobにデータを挿入するライブラリプログラムコードが呼び出されるベンダーの請求書作成のためのプログラムに取り組んでいました。列にnullを挿入できません - Informix

問題は、テーブルt_jobにデータを挿入するためのこのライブラリコードが、多くの異なる4geプログラムおよび異なるユーザーから呼び出されてしまいましたが、私は新たに作成されたユーザーに特有の問題に直面しています。

このユーザーの「列(t_job.username)にnullを挿入できません」というエラーが表示されます。

データを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として表示されるのはなぜですか?

以下に示すようにIはSYSUSERデータベースのsysusersテーブルに見て、そこに2行が見つかりました:

username informix 
usertype D 
priority 9 
password 
defrole 

username public 
usertype C 
priority 5 
password 
defrole 

この点で任意の助けが高く評価されます。

答えて

0

sysusersテーブルの行数が2行の場合、ステートメントはinformixがコードを実行するときに変数_userを設定します。

推奨修正:

INSERT INTO t_job VALUES(USER, _job_key1, _job_key2, _cd, TODAY, _time) 

USERTODAYビルトインされている現在のユーザー名と現在の日付を返すゼロ引数関数(キーワード)。 _userからUSERに変更すると、もはや偽SELECTは必要ありません。 _user変数はまったく必要ないかもしれません。私はまた、_time変数に質問していますが、あなたはそれを置き換えるのをより困難にしなければなりません(CURRENT HOUR TO MINUTEは仕事をするべきです)。

+0

回答ありがとうございます。 –

+0

同じコードが多数の他のユーザーのために働いている間に、なぜ私は挿入コードがエラーを投げているのか理解したいので、私の問題は解決しません。 –

+0

他のユーザーにはなぜ効果があるのか​​を知るには十分なコードが見当たりません。あまり意味がありません。コードを修正する理由は、コードが常に正しく動作していないことと、不要な作業をしていることです。 –

関連する問題