以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  sql 2008 创建了存储过程link 怎么在狐表端启动,并实现对应的数据写入本地呢?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=170025)

--  作者:cnsjroom
--  发布时间:2021/7/9 18:44:00
--  sql 2008 创建了存储过程link 怎么在狐表端启动,并实现对应的数据写入本地呢?
sql 2008 创建了存储过程link  怎么在狐表端启动,并实现对应的数据写入本地呢?

狐表代码:
Dim cmd As new S QLCommand
cmd.Connectio nName = "kj222"
cmd.Comma ndText = "LINK" 
cmd.StoredPr ocedure = True \'表示CommandText内容不是标准的SQL语句,而是存储过程名
cmd.Parameters.Add("@MKCODE ","10010")
cmd.Parameters.Add("@ADDRESS ","D:\\persionLoaction\\Data")
cmd.Parameters.Add("@flag ","1")
Dim dt As DataTable = cmd.ExecuteReader

怎么没有将指定的文件保存到指定的目录下呢?


存储过程语句:

图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:link.zip



--  作者:有点蓝
--  发布时间:2021/7/10 8:52:00
--  
只是执行sql,没有返回表格数据的,使用ExecuteNonQuery即可

cmd.Parameters.Add("@flag ","1")
cmd.ExecuteNonQuery

其次xp_cmdshell这玩意我也没用过,百度看了一下,好像是把文件存储到数据库所在的电脑的,不是保存到客户端。自己到数据库里测试通过后再用
另外如果是多人使用的,注意每个用户都传入不同的地址,如果同名可能会被覆盖掉

--  作者:cnsjroom
--  发布时间:2021/7/10 11:55:00
--  回复:(有点蓝)只是执行sql,没有返回表格数据的,使...
cmd.Paramet ers.Add("@flag ","1")
cmd.ExecuteNonQuery

执行之后 怎么判断执行状况呢?


set @sql=\'sel ect convert(varchar(20),getdate(),120)+\'\',\'\'+convert(varchar(10),(sel ect count(vc_Code) from BW_KJ222..m_Localizer where  i_flag =0)) union all\'+
\' sel ect \'\'\'+@code+\'\'\' +\'\',\'\'+convert(varchar(20),[id],120)+\'\',\'\'+vc_Code +\'\',\'\'+vc_Name \'+
\' from BW_KJ222.dbo.m_Localizer where i_Flag=0\'

这样的语句 是否可以直接改成  在狐表中可以运行的语句呢?上述的\'\'+   +\'\' 是不是可以直接删除不要  如下:
Dim cmd As New SQ LCommand
cmd.Connect ionN ame = "kj222"
cmd.CommandText = sele ct convert(varchar(20),getdate(),120),convert(varchar(10),(sel ect count(vc_Code) from BW_KJ222..m_Localizer where  i_flag =0)) union all sele ct code,convert(varchar(20),[id],120),vc_Code ,vc_Name from BW_KJ222.dbo.m_Localizer where i_Flag=0"
Dim xzqy As DataTable = cmd.ExecuteReader
[此贴子已经被作者于2021/7/10 12:00:52编辑过]

--  作者:有点蓝
--  发布时间:2021/7/10 11:58:00
--  
执行不出错就说明成功执行完毕了。

如果要执行后返回一个值表示成功还是失败,参考:http://www.foxtable.com/webhelp/topics/3267.htm

--  作者:cnsjroom
--  发布时间:2021/7/10 12:01:00
--  回复:(有点蓝)执行不出错就说明成功执行完毕了。如...
set @sql=\'sel ect convert(varchar(20),getdate(),120)+\'\',\'\'+convert(varchar(10),(sel ect count(vc_Code) from BW_KJ222..m_Localizer where  i_flag =0)) union all\'+
 \' sel ect \'\'\'+@code+\'\'\' +\'\',\'\'+convert(varchar(20),[id],120)+\'\',\'\'+vc_Code +\'\',\'\'+vc_Name \'+
 \' from BW_KJ222.dbo.m_Localizer where i_Flag=0\'

这样的语句 是否可以直接改成  在狐表中可以运行的语句呢?上述的\'\'+   +\'\' 是不是可以直接删除不要  如下:
Dim cmd As New SQ LCommand
cmd.Connect ionN ame = "kj222"
cmd.CommandText = sele ct convert(varchar(20),getdate(),120),convert(varchar(10),(sel ect count(vc_Code) from BW_KJ222..m_Localizer where  i_flag =0)) union all sele ct code,convert(varchar(20),[id],120),vc_Code ,vc_Name from BW_KJ222.dbo.m_Localizer where i_Flag=0"
Dim xzqy As DataTable = cmd.ExecuteReader


运行提示:使用 UNION、INTERSECT 或 EXCEPT 运算符合并的所有查询必须在其目标列表中有相同数目的表达式。
是不是必须源端与目标端表结构要一样呢?
[此贴子已经被作者于2021/7/10 12:03:32编辑过]

--  作者:有点蓝
--  发布时间:2021/7/10 13:44:00
--  
UNION的语法先网上学习理解一下:https://www.w3school.com.cn/sql/sql_union.asp