1

T SQLで関数をwhileパラメーターとして使用することは可能ですか?私は次のコードを持っています:

    create function LoginExists (@p_login char(6))
returns varchar(5)
begin
    if exists(select * from Student where student.slogin = @p_login)
        return 'true'
        return 'false'
end;

    create procedure AddStudent2
(@p_fname varchar(30), @p_lname varchar(50), @p_tallness int)
as
declare @p_login char(6), @p_email varchar(50), @suffix char(3);
set @p_lname = LOWER(@p_lname);
set @suffix = '000';
begin
    set @p_login = substring(@p_lname,1, 3) + @suffix;
    while (LoginExists @p_login = 'true')
        set @suffix = cast((CAST(@suffix as int) + 1) as char(3));
            set @p_login = substring(@p_lname,1, 3) + @suffix;
    set @p_email = @p_login + '@vsb.cz';
    insert into Student values (@p_login, @p_fname, @p_lname, @p_email, @p_tallness);
end;

コンパイルしようとすると、「'@p_login'の近くの構文が正しくありません」というエラーが発生します。

4

2 に答える 2

2

関数を呼び出すための構文は実際には正しくありません。

交換:

while (LoginExists @p_login = 'true')

と:

while (dbo.LoginExists (@p_login)= 'true')
于 2013-03-25T13:49:15.930 に答える
-1

交換

if exists(select * from Student where student.slogin = @p_login)

 if exists(select * from Student where Student.slogin = @p_login)

アッパー「S」が入っstudent.slogin ていて、うまくいくといいのですが

于 2013-03-25T13:22:31.900 に答える