从 C# 调用带参数的 As400 程序

Call As400 program with parameters from C#

我正在尝试使用参数从 C# 调用 AS400 程序。目前我可以这样调用程序

 myRepository.Execute($"Call {Settings.As400ProgramLibrary}.EAPP100CL");

执行是我的 IRepository 接口的一部分

 public interface IRepository<T> : IReadOnlyRepository<T> where T : class
    {
        void Add(T item);
        void Add(IEnumerable<T> items);
        void Attach(T item);
        void EnrollInUnitOfWork(IUnitOfWork unitOfWork);
        int Execute(string command, params object[] parameters);
        IEnumerable<T> ExecWithStoreProcedure(string query, params object[] parameters);
        IQueryable<T> FindBy(Func<T, bool> predicate);
        IQueryable<T> FindBy(Func<T, bool> predicate, params Expression<Func<T, object>>[] includes);
        void Remove(T item);
        void Remove(IEnumerable<T> items);
        void Update(T item);
    }

告诉它执行时如何添加参数? 我看了 HERE 但想知道是否还有其他方法。

看起来您的调用字符串与您在 AS400 命令行中键入的字符串相同。如果是这样,那么您将在 CALL 命令中使用 PARM 关键字。

myRepository.Execute($"CALL PGM({Settings.As400ProgramLibrary}.EAPP100CL) PARM('{Parameter1}' '{Parameter2}')");

在此代码段中,我添加了单引号以将您的参数作为带引号的字符串传递,这通常是最简单的,但您也可以将值作为其他类型传递,例如 15,5 小数。我还明确添加了 PGM 关键字,尽管它经常在没有它的情况下工作(就像你的调用字符串一样)。

如需进一步参考,请参阅 CL 手册:CALL command