存储过程如下:
CREATE OR REPLACE PROCEDURE SP_FUNDINFOMATION
(
  FUNCTION_ID IN INTEGER,
  FUNDCODE IN VARCHAR2 DEFAULT NULL,
  FUNDNAME IN VARCHAR2 DEFAULT NULL,
  CREATEDATE IN DATE DEFAULT NULL,
  FUNDGRADE IN VARCHAR2 DEFAULT NULL,
  FUNDNET  IN NUMERIC DEFAULT NULL,
  CUR_FUNDINFO OUT PGK_FUNDINFOMATION.CUR_FUNDINFOMATION
)
AS
  STR_SQL VARCHAR2(5000);
  STR_CONDITION VARCHAR2(1000);
BEGIN
  IF FUNCTION_ID=100 THEN
    IF FUNDCODE IS NOT NULL THEN
      STR_CONDITION:= STR_CONDITION || ' FUNDCODE LIKE ''%'||FUNDCODE||'%''';
    END IF;
    
    IF FUNDNAME IS NOT NULL THEN
      STR_CONDITION:= STR_CONDITION || ' AND FUNDNAME LIKE ''%'||FUNDNAME||'%''';
    END IF;
    
    STR_SQL:='SELECT FUNDCODE,FUNDNAME,CREATEDATE,FUNDGRADE,FUNDNET FROM SR_FUNDINFOMATION';
    
    IF STR_CONDITION IS NOT NULL THEN
      STR_SQL:=STR_SQL||' WHERE '||STR_CONDITION;
    END IF;
    
    DBMS_OUTPUT.PUT_LINE(STR_SQL);
    
    OPEN CUR_FUNDINFO FOR
         STR_SQL;
  END IF;
  
  IF FUNCTION_ID=101 THEN
    INSERT INTO SR_FUNDINFOMATION(FUNDCODE,FUNDNAME,CREATEDATE,FUNDGRADE,FUNDNET) VALUES (FUNDCODE,FUNDNAME,CREATEDATE,FUNDGRADE,FUNDNET);
    COMMIT;
  END IF;
调用该存储过程101功能号时发生【未执行句柄】的错误!估计是101功能里面没有打开游标引起的!
我创建游标主要是为功能号100里输入查询数据;101里面不需要游标变量!希望哪位大侠帮我看看,有什么好方法解决这个问题!谢谢

解决方案 »

  1.   

    try
                {
                    OpenConnection();                cmd = new OracleCommand(Properties.Resources.SP_FUNDINFOMATION, conn);
                    cmd.CommandType = CommandType.StoredProcedure;                OracleParameter[] parameters = BuildInsertParameter(101, FundInfo);
                    cmd.Parameters.AddRange(parameters);                iRet = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    szMsg = ex.Message;
                }
                finally
                {
                    CloseConnection();
                    cmd.Dispose();
                }执行到iRet = cmd.ExecuteNonQuery();发生错误
    错误:
    ORA-24338: 未执行语句句柄