1

私はこのフィールドに不慣れで、この手順の実行に問題があり、次のエラーが表示されます:「オペランド型の衝突: float は日付と互換性がありません」

create proc store.checks_pro

(
@book_id int ,
@check_no int,
@check_date date ,
@check_status tinyint ,
@check_amount float,
@check_funder_name varchar (30),
@check_cash_type tinyint,
@check_cash_checkno varchar (20),
@check_notes varchar(100),
@check_userid int ,
@insertion_userid int ,
@insertiondate datetime 
)
as
begin
insert into  checks (book_id,check_amount,check_cash_checkno,check_cash_type,check_date,check_funder_name,check_no,check_notes,check_status,check_userid,insertion_userid,insertiondate)
values (@book_id,@check_no,@check_date,@check_status,@check_amount,@check_funder_name,@check_cash_type,@check_cash_checkno,@check_notes,@check_userid,@insertion_userid,@insertiondate)


end
4

5 に答える 5

3

INSERTあなたの声明を確認してください。列に挿入@check_dateしてcheck_cash_checknoいます。

于 2013-02-14T07:18:17.243 に答える
1

改訂されたエラーにより、問題は明らかです。値が列と一致していません。列に挿入@check_dateしていますcheck_cash_checkno

于 2013-02-14T07:17:29.850 に答える
1

列名と変数名だけを見ると、パラメーターを指定する順序にかなりの不一致があるようです。

insert into  checks (
book_id,check_amount,check_cash_checkno,check_cash_type,check_date,check_funder_name,
check_no,check_notes,check_status,check_userid,insertion_userid,insertiondate)
values (
@book_id,@check_no,@check_date,@check_status,@check_amount,@check_funder_name,
@check_cash_type,@check_cash_checkno,@check_notes,@check_userid,@insertion_userid,@insertiondate)

たとえば@check_datecheck_cash_checkno列と@check_notes整列している、と整列しているcheck_status、など。

次のように書き直す必要があると思います。

insert into  checks (
book_id,check_amount,check_cash_checkno,check_cash_type,check_date,check_funder_name,
check_no,check_notes,check_status,check_userid,insertion_userid,insertiondate)
values (
@book_id,@check_amount,@check_cash_checkno,@check_cash_type,@check_date,@check_funder_name,
@check_no,@check_notes,@check_status,@check_userid,@insertion_userid,@insertiondate)

これは、列 (​​属性) を序数ではなく名前で参照するというリレーショナルの理想に SQL が対応できない不幸な場所の 1 つですVALUESINSERTステートメントの列に付けた順序。

于 2013-02-14T07:18:56.757 に答える
0
INSERT INTO 
checks (book_id,check_amount,check_cash_checkno,check_cash_type,check_date,check_funder_name,check_no,check_notes,check_status,check_userid,insertion_userid,insertiondate)
VALUES    
(@book_id,@check_amount,@check_cash_checkno,@check_cash_type,@check_date,@check_funder_name,@check_no,@check_notes,@check_status,@check_userid,@insertion_userid,@insertiondate)

挿入された値の多くは、選択した列の順序と一致しませんでした。

于 2013-02-14T07:23:20.417 に答える
0

値を挿入する順序に従います。

    insert into  checks
    (
    book_id,
    check_amount,
    check_cash_checkno,
    check_cash_type,
    check_date,
    check_funder_name,
    check_no,
    check_notes,
    check_status,
    check_userid,
    insertion_userid,
    insertiondate
    )
    values
    (
    @book_id,
    @check_amount,
    @check_cash_checkno,
    @check_cash_type,
    @check_date,
    @check_funder_name,
    @check_no,
    @check_notes,
    @check_status,
    @check_userid,
    @insertion_userid,
    @insertiondate
    )

エラーを再現する簡単な例:

create table test
(
sdate date,
roll nvarchar(50)
)
insert into test(sdate,roll) values(1,'2008-2-2') --false

insert into test(sdate,roll) values('2008-2-2',1) --true
于 2013-02-14T07:18:21.907 に答える