参数不会传递给函数

时间:2016-11-30 18:56:05

标签: c# postgresql npgsql

this.command.CommandText = "\"GetForeignKeysTable\"";
this.command.CommandType = CommandType.StoredProcedure;
this.command.Parameters.AddWithValue("tableName", resource);
FKDataTable.Load(this.command.ExecuteReader());

在第四行,我收到一个错误:GetForeignKeysTable(tableName:= text)不存在。 PosrtgresSQL:

CREATE OR REPLACE FUNCTION "GetForeignKeysTable"(tableName text)
RETURNS TABLE ("FKFieldName" integer, "PKTableName" text) AS $$
BEGIN
 RETURN QUERY SELECT "Id", "FIO" FROM tableName;
END;
$$ LANGUAGE plpgsql;

2 个答案:

答案 0 :(得分:0)

您可以使用动态sql将表名作为参数传递。请注意,通常不建议这样做。

你的sql应该是一个字符串,然后你连接接收到的表名然后执行str sql string

.....create procedure etc etc etc .......

/* Build Transact-SQL String with parameter value */
SET @SQLQuery = 'SELECT * FROM ' + myTable 
/* Execute Transact-SQL String */
EXECUTE(@SQLQuery)

答案 1 :(得分:0)

我可能在这里充满了sh * t ..但我认为param必须以“@”IE“@tablename”开头,同时确保“resource”是一个字符串,而不是一个类/什么......