我想使用Npgsql來調用一個函數(存儲過程),它需要一個字符作爲參數,但它不起作用。如果我聲明不帶參數的相同函數或INTEGER參數,我會得到我想要的結果集。當我聲明參數爲CHARACTER時,它停止工作。哪裏不對?使用npgsql調用一個函數,需要字符作爲參數
這裏是我的函數的代碼:
CREATE OR REPLACE FUNCTION testrefcursor1(in xxx character varying(10)) RETURNS SETOF refcursor AS
$$
DECLARE
ref1 refcursor;
ref2 refcursor;
BEGIN
OPEN ref1 FOR
SELECT * FROM accounts;
RETURN NEXT ref1;
OPEN ref2 FOR
SELECT * FROM accounts;
RETURN NEXT ref2;
RETURN;
END;
$$
LANGUAGE plpgsql;
這裏是我使用C#代碼:
var connection = new Npgsql.NpgsqlConnection(connectionString.ConnectionString);
connection.Open();
var trans = connection.BeginTransaction();
var command = new Npgsql.NpgsqlCommand("testrefcursor1", connection);
command.CommandType = System.Data.CommandType.StoredProcedure;
var parameter = command.CreateParameter();
parameter.ParameterName = "xxx";
parameter.DbType = System.Data.DbType.String;
parameter.Value = "10";
command.Parameters.Add(parameter);
var da = new Npgsql.NpgsqlDataAdapter(command);
var ds = new System.Data.DataSet();
da.Fill(ds);
trans.Commit();
connection.Close();
我已經嘗試過聲明參數爲人品,人品(10) ,字符變化和字符變化(10)...
編輯:我沒有得到任何錯誤消息,但沒有得到預期的結果集,我得到一個空的結果集與單個列h與我試圖調用的函數名稱相同。
... Postgres有什麼問題? – Eric 2009-08-25 12:07:59