Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Stored procedures 带有Oledb提供程序的Visual Foxpro数据库存储过程_Stored Procedures_Visual Foxpro - Fatal编程技术网

Stored procedures 带有Oledb提供程序的Visual Foxpro数据库存储过程

Stored procedures 带有Oledb提供程序的Visual Foxpro数据库存储过程,stored-procedures,visual-foxpro,Stored Procedures,Visual Foxpro,我使用的是VisualFoxpro8.0数据库。我使用以下过程根据条件匹配从数据库返回记录,但它引发错误: “功能未实现。” Foxpro程序------------------------ PROCEDURE FX_Proc_ValidateUser (paramUserName AS Character, paramPassword AS Character) LOCAL VarUserName AS Character, varXml VarUserName = IIF(VARTYPE(p

我使用的是VisualFoxpro8.0数据库。我使用以下过程根据条件匹配从数据库返回记录,但它引发错误:

“功能未实现。”

Foxpro程序------------------------

PROCEDURE FX_Proc_ValidateUser (paramUserName AS Character, paramPassword AS Character)
LOCAL VarUserName AS Character, varXml
VarUserName = IIF(VARTYPE(paramUserName)!="N","",paramUserName)
LOCAL VarPassword AS Character
VarPassword = IIF(VARTYPE(paramPassword)!="N","",paramPassword)
SELECT userinfoid, ;
        username, ;
        password ;
FROM tm_userinfo.dbf ;
WHERE username = VarUserName AND password = VarPassword ;
INTO CURSOR procResult  
varXml = ""
CURSORTOXML("procResult","varXml",1,32,0,"1")
RETURN varXml
ENDPROC
用于调用此过程的前端代码------------------

PROCEDURE FX_Proc_ValidateUser (paramUserName AS Character, paramPassword AS Character)
LOCAL VarUserName AS Character, varXml
VarUserName = IIF(VARTYPE(paramUserName)!="N","",paramUserName)
LOCAL VarPassword AS Character
VarPassword = IIF(VARTYPE(paramPassword)!="N","",paramPassword)
SELECT userinfoid, ;
        username, ;
        password ;
FROM tm_userinfo.dbf ;
WHERE username = VarUserName AND password = VarPassword ;
INTO CURSOR procResult  
varXml = ""
CURSORTOXML("procResult","varXml",1,32,0,"1")
RETURN varXml
ENDPROC

如何使用OledbCommand从foxpro 8.0存储过程中获取结果集?

我周围没有VFP,上次使用VFP时还是3.0版

根据规格,我会尝试类似的东西。要了解其余内容,请通读


VisualFoxPro存储过程基本上是使用VisualFoxPro代码执行任务,例如在插入、更新或删除时验证列

例如,您可以将以下代码添加到VFP数据库存储过程中,以验证“状态”列:


您还可以使这些视图可更新,并对该视图执行插入操作。

问题似乎在于您正在将结果放入数组中,并且只返回数组中的第一项。您应该更改存储过程,使其使用游标

VFP9示例

下面是northwind.dbc中的存储过程示例:

下面是一个使用C#调用存储过程的示例:

VFP8示例: (我没有VFP8的副本,但我相信这会起作用)


也许这个链接有帮助:感谢rene的帮助,我使用了您的过程,但它只返回记录的唯一键,而如果条件匹配,我必须从数据库返回resultset。我已经更新了我的问题,请再次查看并帮助我。。再次感谢Hi Rene,请告诉我如何使用OledbCommand从foxpro存储过程中获取结果集ThanksHi Jerry,我在从foxpro数据库获取结果集时遇到了问题。请查看我更新的问题…并帮助我。谢谢Tom Brothers,此过程很有意义,但我使用的是Visual Foxpro 8.0,因此这里的SETRESULTSET()不支持。当我使用Oledb提供程序访问该过程时,它引发了一个错误:“文件'setresultset.prg'不存在”。请建议我这是紧急情况。感谢Tom Brothers的努力,但通过使用您的新过程及其使用方式,我得到了一个新的异常,即调试行命令时“未实现函数”。ExecuteScalar()。亲爱的Tom Brothers,执行命令时,.net代码中出现错误。var xml=command.ExecuteScalar()作为字符串;我安装了VFP8并测试了我的代码。它像预期的那样工作。你们能发布你们的存储过程代码吗?嗨,汤姆兄弟,我已经编辑了这个问题,你们可以看到我在存储过程中写了什么,以及如何从.net执行这个问题
PROCEDURE insertData (pusername, ppassword)

                    SELECT userinfoid, username, password 
                    FROM tm_userinfo.dbf 
                    WHERE username = pusername AND password = ppassword
                    INTO ARRAY results
     RETURN results
ENDPROC
PROCEDURE ValidateState()
IF address.state <> [OH]
    MESSAGEBOX([Incorrect State value!], 48, [Invalid State])
ENDIF
ENDPROC
 LOCAL pusername AS Integer   
 pusername = "SomeUserName"    &&Use this to filter the view
 SELECT 0
 USE MyViewName       &&This will call the view and perform the filter.
var northwindDbcPath = @"C:\Program Files (x86)\Microsoft Visual FoxPro 9\Samples\Northwind\Northwind.dbc";
var connectionString = "Provider=VFPOLEDB.1;Data Source=" + northwindDbcPath;
var table = new DataTable();

using(var connection = new OleDbConnection(connectionString)) {
    using(var command = connection.CreateCommand()) {
        command.CommandType = CommandType.StoredProcedure;
        command.CommandText = "CustOrdersDetail";
        command.Parameters.Add("x", 10248);

        var adapter = new OleDbDataAdapter(command);

        adapter.Fill(table);
    }
}
var northwindDbcPath = @"C:\Program Files (x86)\Microsoft Visual FoxPro 9\Samples\Northwind\Northwind.dbc";
var connectionString = "Provider=VFPOLEDB.1;Data Source=" + northwindDbcPath;
DataTable table;

using(var connection = new OleDbConnection(connectionString)) {
    using(var command = connection.CreateCommand()) {
        command.CommandType = CommandType.StoredProcedure;
        command.CommandText = "CustOrdersDetail2";
        command.Parameters.AddWithValue("x", 10248);

        connection.Open();      
        // executing stored procedure and getting xml result
        var xml = command.ExecuteScalar() as string;

        connection.Close();

        using(var reader = new StringReader(xml)) {
            var dataSet = new DataSet();

            // creating a dataset from the xml 
            dataSet.ReadXml(reader);
            table = dataSet.Tables[0];
        }
    }
}