获取SQL,第1张

获取SQL,第2张

当我们使用SQL Server表作为数据源来创建远程视图时,Visual FoxPro会自动将组成主索引键的字段的KeyField属性设置为true (.T .)。如何通过程序获取主键的信息得到主键结构的细节?我们可以使用存储过程sp-pkeys来获取它。
SQL Server的存储过程sp-pkeys可以返回标有主键设置的字段的信息。sp-pkeys与ODBC中的SQLPrimaryKeys具有相同的功能。返回的结果按照表限定符、表所有者、表名称、键序列的顺序排列。返回的游标的结构如表1所示。
下面的例程演示了sp-pkeys的具体应用方法:
* getkeys.prg
*在实际操作中,请使用实际的服务器名,而不是下面的服务器名
# define connect—string ' driver = { SQL server };SERVER = MY—服务器;′ + ;
'数据库= PUBS;UID = saPw ='
*创建一个游标
来保存信息。创建游标SQL键(表名c (128),列名c (128),;
Key—Seq I,PK—name C (128)]
*连接到SQL Server
GNConnhandle = SQL String Conn(Connect—String)
if GNConnhandle > 0
*获取SQL Server中可用的表数
sqlconntables = SQL tables(GNConnhandle)
if sqlconntables > 0
select SQL result
in CNT = 0[]Eof ()
*创建命令字符串以执行存储过程
sqlcommand = " sp—pkeys "+all trim(table—name)
*执行存储过程并将数据返回到游标
=SQLEXEC(gnConnHandle,SQLCommand,' syskeys')
*转到游标所在的工作区
Select syskeys
ifreccount()> 0
scan
IFR
(SYSKeys。表—名称、系统密钥。列—名称;
syskeys.key—seq,syskeys . PK—name)
else
*多字段主键
*联接多个字段形成索引表达式
SQLKeys。列—名称带有;
ALLTRIM(SQLKeys。column-Name)+;
"+ "+ all trim(SYSKeys。column-Name)
ENDIF
ENDSCAN
ENDIF
SELECT SQL result
SKIP
ENDDO
= SQL discon(gnconnhandle)
ENDIF
ENDIF
SELECT SQL keys
brow last
close all
return
以上程序适用于VFP 3.0及更高版本。
表1中的字段名表示
table_qualifier表约束的名称,它是表所属的数据库的名称,可以返回值空 null。
table _ owner表的所有者的名称。表示创建该表的数据库用户的名称。该字段总是有返回值。
table _ name表的名称。该字段总是有返回值。
column_name字段名称,包括table-name字段返回的表中的所有字段。这个字段的内容是在系统字段表(syscolumns)中注册的字段名称,并且总是有一个返回值。如果主键由多个字段组成,sp-pkeys将为组成主键索引表达式的每个字段返回一行记录。
key_seq多字段主键中该字段的序号,总有返回值。
主键名主键ID。如果它不适用于数据源,则空值为null。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 获取SQL

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情