SQL SERVER中的:
declare 
@a varchar(32)
select @a='123'select * from table_name where table_name.col_name=@a我写了一个
declare
a varchar(32):='123';
begin
 select * from sa.table_name where table_name.col_name=a;
end;
提示缺少INTO在ORACLE中应该怎么写呢?

解决方案 »

  1.   

    declare 
    a varchar(32):='123'; 
    b sa.table_name%rowtype;
    begin 
    select * into b from sa.table_name where table_name.col_name=a; 
    end; 
      

  2.   

    plsql块里不能使用select * from ...形式返回结果集.
    要返回结果集可以尝试用refcursor赋值使用SELECT INTO 或 :=
      

  3.   


    declare 
    a varchar(32):='123'; 
    begin 
    select * from sa.table_name where table_name.col_name=a; 
    end; 我想返回记录集,利用变量a作为条件,怎么写?
      

  4.   

    其实就是在select 语句中怎么用 我自己的变量啊?
      

  5.   

    declare
    a varchar(32):='123';
    begin
    select * from sa.table_name where table_name.col_name := a;
    end; 
      

  6.   

    谢谢2,3楼的回复
    ORACLE里就没有类似SQL SERVER的那种用法么?
    好困惑啊,自己再顶一下!
      

  7.   

    tsql 和 pl/sql 的语法类似但不完全相同
      

  8.   

    我再详细说明一下:
    table a                  table   b             table   c
    id   name  sex          name   alias        id    name   sex
    1    张三   m            张三    老三
    2    大头   m            王二    大头
    3    小头   f            李四    小头表a中的大头是个外号,表b是人名和外号的对照表,现在我想把表a中的所有外号改成真名,再写到c中去,a表不动我现在是先把表a的内容复制到c
    然后update  c表
    update c
    set (c.name) =(select b.name from b inner join a on a.name=b.alias)
    where exists (select 1 from b inner join a on a.name=b.alias);
    提示:
    第 2 行出现错误:
    ORA-01427: 单行子查询返回多个行
    我应该怎么改呢?
    大家帮忙,谢谢了
      

  9.   

    知道了,终于找到怎么写了
    发来共享
    update c
    set (c.name) =(select b.name from b inner join a on a.name=b.alias where c.name=b.alias)
    where  c.name in (select b.alias from b inner join a on a.name=b.alias ) ;