应该是你的这个查询查出多条符合条件的记录,然后你只是把它们INTO 到一个变量之中,所以会触发一个TO_MANY_ROWS的异常!

解决方案 »

  1.   

    Mutiple rows in singleton select
    说明返回多条记录,:songnames,:singernames不确定
      

  2.   

    那是说返回了多个记录,而要求只有一个吧……
    你先看看数据库里有没有重复的记录,另,把sql语句在查询分析器里执行一下,看看结果集。
    还有不知道你用的是什么数据库,我是sqlserver。
    你怎么写是不是只希望得到两个值?但是查到好象不只一条记录。
      

  3.   

    Mutiple rows in singleton select
    说明返回多条记录,:songnames,:singernames不确定
      

  4.   

    : lizhenjia(暴雪) 那该怎么办,是否要加一个for循环??
      

  5.   

    CREATE PROCEDURE LANSELECT (
      LANID VARCHAR(3)
    )
    AS   
    begin
      select songname,singername  from usersongs where songlanid=:lanid and songno in (select songfilename from songpath)
    end
    这样选出所有符合条件的纪录不好吗?
    或者使用游标
      

  6.   

    如果有多条记录返回可以将输出参数去除
    把存储过程当作一个dataset来使用CREATE PROCEDURE LANSELECT (
      LANID VARCHAR(3)
    ) AS   
    begin
      select songname,singername  from usersongs where songlanid=:lanid and songno in (select songfilename from songpath);
     exit;
    end
      

  7.   

    : xmlord(护戒使者) 编译通不过!
      

  8.   

    办法1:
    定义一个数组
    选出的数据into 到这个数组中
    办法2:
    用游标
    declare cursor cursorname is 
      select ......
      form ...
      where ...
    open cursorname;
    Fetch cursorname into....
      

  9.   

    忘了告诉大家:我用的是interbase
      

  10.   

    如果是interbase;请使用一下类似的语句,具体我记不清了,有快三年没有用interbase了:),现在机器上没有装,你看一下interbase的文档CREATE PROCEDURE LANSELECT (
      LANID VARCHAR(3)
    ) RETURNS (
      SONGNAMES VARCHAR(80),
      SINGERNAMES VARCHAR(30)
    ) AS   
    begin
      for select
       songname,singername  from usersongs where songlanid=:lanid and songno in (select songfilename from songpath)
      into :songnames,:singernames 
      do
      suspend ;end
      

  11.   

    多谢,我也改成了这样,可是进行查询时,出错说我的dataset是关闭的
      

  12.   

    嘻嘻,当然要使用游标了
    CREATE PROCEDURE LANSELECT (
      LANID VARCHAR(3)
    ) RETURNS (
      SONGNAMES VARCHAR(80),
      SINGERNAMES VARCHAR(30)
    ) AS   
    begin
    declare  mycursor cursor for select
       songname,singername  from usersongs where songlanid=:lanid and songno in (select songfilename from songpath)
       open mycursor
       fetch mycursor into :SONGNAMES,:SINGERNAMES