| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 939 人关注过本帖
标题:带有参数的命令
只看楼主 加入收藏
hyz00001
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:168
专家分:137
注 册:2012-10-5
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
带有参数的命令
需要实现的功能比较简单,将现在已经打开的某一张表按照我指定的名字复制到指定位置。
我自己编写的代码如下:
弹出的错误提示为:“找不到变量cfile”
请给与指导,谢谢。


SELECT * FROM po
DO cv WITH cfile

PROCEDURE cv
    PARAMETERS cfile
    COPY TO 'd:\'- cfile TYPE CSV
RETURN
2014-06-20 13:07
hyz00001
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:168
专家分:137
注 册:2012-10-5
收藏
得分:0 
刚才经过研究,看是不是这样就ok?
CLOSE TABLES
USE po
CFILE ='item'
DO cv WITH cfile

PROCEDURE cv
PARAMETERS cfile
    COPY TO 'd:\'- cfile TYPE CSV
RETURN
2014-06-20 13:17
hyz00001
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:168
专家分:137
注 册:2012-10-5
收藏
得分:0 
如果我希望在其他任何地方都能调用cv这个过程呢?
2014-06-20 13:19
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:20 
命令中的cfile应用宏,并且把结果转换回字符串与'd:\'运算。正规的方法,应是先建立一个中间字符型变量filename,把路径和文件名拼接好,再按标准语法调用命令:COPY TO &filename TYPE CSV

适应性更强的写法是:COPY TO "&filename" TYPE CSV
支持长文件名,特别是中间带空格的文件名。

[ 本帖最后由 TonyDeng 于 2014-6-20 13:22 编辑 ]

授人以渔,不授人以鱼。
2014-06-20 13:20
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用hyz00001在2014-6-20 13:19:23的发言:

如果我希望在其他任何地方都能调用cv这个过程呢?

把这个过程写在一个单独的PRG文件中,使用前先 SET PROCEDURE TO 该文件;或者此PRG的文件名与PROCEDURE名同名,而 SET PATH TO 搜索路径包含此PRG文件所在的文件夹。

授人以渔,不授人以鱼。
2014-06-20 13:25
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
小小提示:写一个软件系统,不必把所有PRG都放在同一个目录,应该分类管理,各有各独立的文件夹,比如通用的自定义过程和函数,就集中在一个文件夹中,而该程序自身独用的,就放在程序自身的目录树中,还应分模块归类,不必只有一个目录。系统和语言提供 SET PATH TO 这样的指令,不是没意义的。

授人以渔,不授人以鱼。
2014-06-20 13:31
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
最好少用DO...WITH,用与其他语言语法看起来更一致的proc_name(parameters_list)。前者默认是引用传递,在被调用过程和函数中可能会无意中修改实参的内容,发生不必要的问题,改用后者的赋值传参方式是较安全的。

授人以渔,不授人以鱼。
2014-06-20 13:41
hyz00001
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:168
专家分:137
注 册:2012-10-5
收藏
得分:0 
完美的解决了 问题。
谢谢。
2014-06-20 13:44
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
尽量用4楼说的标准语法格式书写命令,特别是复杂的SQL SELECT查询语句。把每一子项对应到一个可以跟踪内容的字符串上,对排查错误有莫大的帮助,不要把运算过程统统写到命令中,一条语句占用两行已经难以忍受,但我看到很多人乐于写出十多行的复杂语句,估计是一次性使用的,作以后决不会跟踪排错的打算(当然出问题了到网上找“大神”也是路径之一)。

授人以渔,不授人以鱼。
2014-06-20 13:55
快速回复:带有参数的命令
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025796 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved