楼主的存储过程还没有专程oracle的么

解决方案 »

  1.   

    CREATE OR REPLACE PROCEDURE InsertTerminalState (
    p_STATUS  in varchar2(255),
    p_IPADDRESS in varchar2(20))
    IS
    --定义临时变量,用来接收 TERMINALID
    TempID int;
    --如果机器信息表 TR_INFO 中存在 @IPADDRESS 这个机器,则把他的机器 ID 取出来赋值给变量 @TempID 中
    begin
     select ID into TempID  from TR_INFO where IPADDRESS =p_IPADDRESS;
    --插入数据到TR_STATUS表
    insert into TR_STATUS (TERMINALID,STATUS,IPADDRESS) values (TempID,p_STATUS,p_IPADDRESS);
    --并将tr_info表中active字段值改为1
    update tr_info set active = '1' where TERMINALID = TempID;
    EXCEPTION
          WHEN no data found
          THEN
             null;
      

  2.   

    --没做测试
    CREATE OR REPLACE PROCEDURE InsertTerminalState (
    p_STATUS  in varchar2,
    p_IPADDRESS in varchar2)
    IS
    --定义临时变量,用来接收 TERMINALID
    TempID int;
    --如果机器信息表 TR_INFO 中存在 @IPADDRESS 这个机器,则把他的机器 ID 取出来赋值给变量 @TempID 中
    begin
     select ID into TempID  from TR_INFO where IPADDRESS =p_IPADDRESS;
    --插入数据到TR_STATUS表
    insert into TR_STATUS (TERMINALID,STATUS,IPADDRESS) values (TempID,p_STATUS,p_IPADDRESS);
    --并将tr_info表中active字段值改为1
    update tr_info set active = '1' where TERMINALID = TempID;
    EXCEPTION
          WHEN no data found
          THEN
             null;
    end;
      

  3.   

    //--错误如下
    Compilation errors for PROCEDURE DEV.INSERTTERMINALSTATEError: PLS-00103: 出现符号 "DATA"在需要下列之一时:
            . then or
           符号 ".在 "DATA" 继续之前已插入。
    Line: 16
    Text: THEN
      

  4.   

    WHEN NO_DATA_FOUND THEN
           NULL;--上面写错了
      

  5.   

    楼主你这几个存储过程其实都差不多阿
    了解oracle中的参数定义,基本的写法就好了
      

  6.   

    //修该后如下
    CREATE OR REPLACE PROCEDURE InsertTerminalState (
    p_STATUS in varchar2,
    p_IPADDRESS in varchar2)
    IS
    --定义临时变量,用来接收 TERMINALID
    TempID int;
    --如果机器信息表 TR_INFO 中存在 @IPADDRESS 这个机器,则把他的机器 ID 取出来赋值给变量 @TempID 中
    begin
    select ID into TempID from TR_INFO where IPADDRESS =p_IPADDRESS;
    --插入数据到TR_STATUS表
    insert into TR_STATUS (TERMINALID,STATUS,IPADDRESS) values (TempID,p_STATUS,p_IPADDRESS);
    --并将tr_info表中active字段值改为1
    update tr_info set active = '1' where TERMINALID = TempID;
    EXCEPTION
    WHEN NO_DATA_FOUND THEN
    null;
    end;
    //错误如下----------------------------------------------------------------
    Compilation errors for PROCEDURE DEV.INSERTTERMINALSTATEError: PL/SQL: ORA-00904: "IPADDRESS": 标识符无效
    Line: 9
    Text: select ID into TempID from TR_INFO where IPADDRESS =p_IPADDRESS;Error: PL/SQL: SQL Statement ignored
    Line: 9
    Text: select ID into TempID from TR_INFO where IPADDRESS =p_IPADDRESS;
      

  7.   

    select ID into TempID from TR_INFO where IPADDRESS =p_IPADDRESS;IPADDRESS是列名么,是否你写错了