求写个函数,有两参数,客户号码,跟表名。
如果客户号在表中存在则返回true,否则返回false。如果表名不存在抛出异常。

解决方案 »

  1.   

    create or replace function checkCustomerNo(CustomerNo varchar2,TableName varchar2) return number
    is 
    strSql varchar2(4000);
    intCount number;
    begin
         strSql:='select count(*) from ' || TableName || ' where CustomerNo=''' || CustomerNo || '''';
         execute immediate strSql into intCount;
         return intCount;
    end;
    返回number型客户号存在返回大于0
    不存在返回0
      

  2.   

    其它是没什么,关键是你的那个客户编号如果是varchar2类型的,注意要用单引号引起来。
    而Oracle中的单引号使用,好像是四个单引号代表一个单号,之前有写过,最后出现错误就是这里
      

  3.   

    这样子还要写函数,可以直接用select 语句判断!
      

  4.   

    楼上说的有些混乱 
    并不是四个单引号代表一个单号
    就拿下面这个举例
    strSql:='select count(*) from ' || TableName || ' where CustomerNo=''' || CustomerNo || ''''
    'select count(*) from ' 是字符串可以用连接符||链接 相关的字符串 
    如果字符串中要引用过程中的变量那么就应该用'||变量名||'取到值
    比如'select count(*) from ' || TableName || ' where CustomerNo=''' || CustomerNo || ''''里面的
    ''' || CustomerNo || ''''
    第一个引号表示连接前面的字符串  第二个表示是用引号括起来的字符串 第三个引号和||将变量前后扩起来表示取值 最后面的引号对应字符串的结束。
      

  5.   

    最好加一个处理异常的语句
    exception