1

私のテーブルはこの構造を持っていますT_user(usern,pass,realname: varchar(50); 私は Firebird の初心者であり、次のステートメントを実行したいのですが、このエラーが発生します:

if (select Count(*) as cnt FROM T_USER WHERE ( usern = 'test') And (pass
= ']')) > 0  then  select T_user.realname from t_user where t_user.usern = 'test';

これはエラーメッセージです:

エラー: IBPP::SQLException コンテキスト: Statement::Prepare( if (select Count(*) as cnt FROM T_USER WHERE ( usern = 'test') And (pass = ']')) > 0 then select T_user.realname from t_user where t_user.usern = 'test' ) メッセージ: isc_dsql_prepare が失敗しました

SQL メッセージ: -104 無効なトークン

エンジン コード: 335544569 エンジン メッセージ: 動的 SQL エラー SQL エラー コード = -104 トークンが不明 - 行 1、列 1 の場合

Firebird 2.5 と FlameRobin を使用しています。

4

2 に答える 2

3

このコードを試してください:

EXECUTE BLOCK
  RETURNS (name VARCHAR(50))
AS
  DECLARE VARIABLE C INTEGER;
BEGIN
  select Count(*) 
  FROM T_USER 
  WHERE  usern = 'test' And pass = ']'
  INTO :C;

  IF (:C > 0) THEN
    select T_user.realname 
    from t_user 
    where t_user.usern = 'test'
    into :name;
  ELSE
    name = NULL;

  SUSPEND;
END
于 2012-10-17T14:30:59.297 に答える
-1
IF ((SELECT COUNT(*) AS CNT
    FROM T_USER
    WHERE (USERN = 'test')
          AND (PASS = ']')) > 0) THEN
  SELECT T_USER.REALNAME
  FROM T_USER
  WHERE T_USER.USERN = 'test';
于 2012-10-17T15:04:45.143 に答える