我在程序用用SQL创建了一个存储过程,如下:
CREATE PROCEDURE TABLE_EXISTS (
    PTBL VARCHAR(40) CHARACTER SET NONE)
RETURNS (
    PR INTEGER)
AS
BEGIN                                                
    SELECT COUNT(*)                                  
    FROM RDB$RELATIONS                               
    WHERE RDB$RELATION_NAME=:PTBL
    INTO PR;                                         
    IF (PR IS NULL) THEN PR=0;                       
    EXIT;                                            
END但是到了,数据库中后变量:PTBL 变成了 “?”,如下:
CREATE PROCEDURE TABLE_EXISTS (
    PTBL VARCHAR(40) CHARACTER SET NONE)
RETURNS (
    PR INTEGER)
AS
BEGIN                                                
    SELECT COUNT(*)                                  
    FROM RDB$RELATIONS                               
    WHERE RDB$RELATION_NAME=?  /就是这里改变了/
    INTO PR;                                         
    IF (PR IS NULL) THEN PR=0;                       
    EXIT;                                            
END
 
我用的是INTERBASE的数据库,请问这是什么问题,改如何解决?谢谢!

解决方案 »

  1.   

    INTERBASE的数据库没用过帮你顶
      

  2.   

    CREATE PROCEDURE TABLE_EXISTS (
        @PTBL VARCHAR(40) CHARACTER SET NONE)
    ...                                              
        WHERE RDB$RELATION_NAME=@PTBL
    ...
    END
      

  3.   

    存储过程参数和变量名前加  @
    CREATE PROCEDURE TABLE_EXISTS (
        @PTBL VARCHAR(40) CHARACTER SET NONE)
    RETURNS (
        PR INTEGER)
    AS
    BEGIN                                                
        SELECT COUNT(*)                                  
        FROM RDB$RELATIONS                               
        WHERE RDB$RELATION_NAME=:PTBL
        INTO PR;                                         
        IF (PR IS NULL) THEN PR=0;                       
        EXIT;                                            
    END
      

  4.   

    楼上的方法不行呀。我用的是INTERBASE的数据库
      

  5.   

    @PTBL
    sql2k 是这么用的
      

  6.   

    还有没有高手呀 ,我用的是InterBase
      

  7.   

    INTERBASE的数据库没用过  我帮你顶  是不是类型不匹配呢