On 10/11/05, Carlos Guzmán Álvarez <[EMAIL PROTECTED]> wrote:
Hello:

> I'm probably going to kick myself when i know what's wrong, but i
> can't find it anywhere. I'm not even sure if the return value is the
> problem, or the value being sent.

Ok could you send to me a test case that reproduces the problem please ??

I sent some zips through, not sure if they made it. Here is a class and the ddl for the database. I'm still completely stumped by this.



public class ParameterTest
    {
        public ParameterTest()
        {
        }

        public int TestParameter()
        {
            string name = "Test";
            string code = "TT";
            int currencyID = 5;
            int id = 0;
            bool isPercentage = false;

            FbConnection conn = new FbConnection("User=SYSDBA;Password=masterkey;Database=C:\\Data\\PARAMETERTEST.fdb;DataSource=localhost;Port=3050;Dialect=3;Charset=NONE;Role=;Connection lifetime=15;Pooling=true;MinPoolSize=0;MaxPoolSize=50;Packet Size=8192;ServerType=0");
           
            FbCommand com = new FbCommand("IndexTInsert", conn);
           
            com.CommandType = CommandType.StoredProcedure;

            FbParameter param;

            param = new FbParameter("@Name", FbDbType.VarChar);
            param.Value = name;
            com.Parameters.Add(param);

            param = new FbParameter("@Code", FbDbType.VarChar);
            param.Value = code;
            com.Parameters.Add(param);

            param = new FbParameter("@FK_CurrencyID", FbDbType.Integer);
            param.Value = currencyID;
            com.Parameters.Add(param);

            param = new FbParameter("@IsPercentage", FbDbType.SmallInt);
            param.Value = isPercentage;
            com.Parameters.Add(param);

            param = new FbParameter("@ID", FbDbType.Integer);
            param.Direction = ParameterDirection.Output;
            com.Parameters.Add(param);
           
            conn.Open();
       
            object test = com.ExecuteScalar();

            id = (int)test;

            conn.Close();
            conn.Dispose();
            com.Dispose();

            return id;
        }

       
    }




DDL (Courtesy of IBExpert):



/******************************************************************************/
/****       Generated by IBExpert 2005.09.25 14/11/2005 09:00:24 AM        ****/
/******************************************************************************/

SET SQL DIALECT 3;

SET NAMES NONE;

CREATE DATABASE 'C:\Data\ParameterTest.fdb'
USER 'SYSDBA' PASSWORD 'masterkey'
PAGE_SIZE 16384
DEFAULT CHARACTER SET NONE;



/******************************************************************************/
/****                              Generators                              ****/
/******************************************************************************/

CREATE GENERATOR GEN_INDEXT_ID;
SET GENERATOR GEN_INDEXT_ID TO 1;



SET TERM ^ ;



/******************************************************************************/
/****                          Stored Procedures                           ****/
/******************************************************************************/

CREATE PROCEDURE INDEXTINSERT (
    FK_CURRENCYID INTEGER,
    CODE VARCHAR(15),
    NAME VARCHAR(50),
    ISPERCENTAGE SMALLINT)
RETURNS (
    ID INTEGER)
AS
BEGIN
  EXIT;
END^



SET TERM ; ^


/******************************************************************************/
/****                                Tables                                ****/
/******************************************************************************/



CREATE TABLE INDEXT (
    INDEXTID       INTEGER NOT NULL,
    FK_CURRENCYID  INTEGER NOT NULL,
    CODE           VARCHAR(15),
    NAME           VARCHAR(50),
    ISPERCENTAGE   SMALLINT default 0 NOT NULL
);



/******************************************************************************/
/****                          Unique Constraints                          ****/
/******************************************************************************/

ALTER TABLE INDEXT ADD CONSTRAINT UNQ1_INDEXT UNIQUE (CODE);
ALTER TABLE INDEXT ADD CONSTRAINT UNQ2_INDEXT UNIQUE (NAME);


/******************************************************************************/
/****                             Primary Keys                             ****/
/******************************************************************************/

ALTER TABLE INDEXT ADD CONSTRAINT PK_INDEXT PRIMARY KEY (INDEXTID);


/******************************************************************************/
/****                               Triggers                               ****/
/******************************************************************************/


SET TERM ^ ;


/******************************************************************************/
/****                         Triggers for tables                          ****/
/******************************************************************************/



/* Trigger: INDEXT_BI */
CREATE TRIGGER INDEXT_BI FOR INDEXT
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.INDEXTID IS NULL) THEN
    NEW.INDEXTID = GEN_ID(GEN_INDEXT_ID,1);
END
^

SET TERM ; ^



/******************************************************************************/
/****                          Stored Procedures                           ****/
/******************************************************************************/


SET TERM ^ ;

ALTER PROCEDURE INDEXTINSERT (
    FK_CURRENCYID INTEGER,
    CODE VARCHAR(15),
    NAME VARCHAR(50),
    ISPERCENTAGE SMALLINT)
RETURNS (
    ID INTEGER)
AS
BEGIN
    ID = GEN_ID(GEN_INDEXT_ID,1);
    INSERT INTO INDEXT (INDEXTID, FK_CURRENCYID, CODE, NAME, ISPERCENTAGE)
    VALUES (:ID, :FK_CURRENCYID, :CODE, :NAME, :ISPERCENTAGE);
  SUSPEND;
END
^


SET TERM ; ^


/******************************************************************************/
/****                              Privileges                              ****/
/******************************************************************************/


/* Privileges of users */
GRANT SELECT ON RDB$ROLES TO PUBLIC;

/* Privileges of procedures */
GRANT INSERT ON INDEXT TO PROCEDURE INDEXTINSERT;


Reply via email to