打印本文 打印本文 关闭窗口 关闭窗口
sybase 11.5 & 11.9.2 使用动态sql
作者:武汉SEO闵涛  文章来源:敏韬网  点击数3156  更新时间:2009/4/22 23:09:38  文章录入:mintao  责任编辑:mintao
--------------------------- 
 */

use sybsystemprocs
go

/*
 * create sp_exec_dynsql
 */
if object_id("sp_exec_dynsql") <> NULL
begin
    drop procedure sp_exec_dynsql
end
go

create procedure sp_exec_dynsql
/* Copyright (c) 1999 Rob Verschoor/Sypron B.V. */
  @p_cmd varchar(255) = "%"
as
begin
declare @remoteserver varchar(32)

   /* 
    * suppress rubbish 
    */
   set nocount on

   /* 
    * make sure this is 11.5 or later
    */
   if substring(@@version, 1, 26) != "Adaptive Server Enterprise"
   begin
      print "This procedure only works for ASE version 11.5 or later."
      return (-1)
   end

   /* 
    * check server name is defined
    */
   if @@servername = NULL
   begin
      print "The @@servername must be defined."
      print "Run ""sp_addserver SERVERNAME, local"", and restart the server"
      return (-1)
   end

   /* 
    * Check a remote server is set up, pointing to the local server
    * (this is the basic trick that makes this whole procedure work)
    */
   select @remoteserver = srvname
   from master..sysservers
   where srvnetname = @@servername
     and srvname    != @@servername

   if (@@rowcount = 0) or (@remoteserver = "")
   begin
      print "A remote server must be set up in master..sysservers,"
      print "pointing to this local server."
      print "First run the setup scripts CISXP_SETUP1.SQL & CISXP_SETUP2.SQL"
      print "to fix this. These can be downloaded from"
      print "http://www.euronet.nl/~syp_rob/cisxp_setup.html"

      return (-1)
   end

   /*
    * execute the specified command
*/
   exec sp_remotesql @remoteserver, @p_cmd

end
go
grant execute on sp_exec_dynsql to public
go

/*
 * end
 */

关闭本页  

上一页  [1] [2] [3] 

打印本文 打印本文 关闭窗口 关闭窗口