卡西卡的小寶庫
寶庫寶庫寶庫

[SP]up_Desc

Posted In: , . By 卡西卡

類似Oracle的desc指令

CREATE PROCEDURE up_desc (
    @TABLE_NAME NVARCHAR(128)  -- 資料表名稱
)AS
SELECT COLUMN_NAME,
CASE DATA_TYPE
        WHEN 'char' THEN DATA_TYPE+'('+CONVERT(VARCHAR(10),CHARACTER_MAXIMUM_LENGTH)+')'
        WHEN 'varchar' THEN DATA_TYPE+'('+CONVERT(VARCHAR(10),CHARACTER_MAXIMUM_LENGTH)+')'
        WHEN 'nvarchar' THEN DATA_TYPE+'('+CONVERT(VARCHAR(10),CHARACTER_MAXIMUM_LENGTH)+')'
        WHEN 'numeric' THEN DATA_TYPE+'('+CONVERT(VARCHAR(10),NUMERIC_PRECISION)+','+CONVERT(VARCHAR(10),NUMERIC_SCALE)+')'
        ELSE DATA_TYPE END AS OBJECT_DATA_TYPE,
    B.value as [OBJECT_DESCRIPTION]
FROM [INFORMATION_SCHEMA].[COLUMNS] A
  LEFT JOIN ::fn_listextendedproperty ('MS_Description', 'user', 'dbo', 'TABLE', @TABLE_NAME, 'COLUMN', default) B ON A.COLUMN_NAME=B.objname
WHERE TABLE_NAME=@TABLE_NAME
ORDER BY A.ORDINAL_POSITION

 

[SP]up_Obj

Posted In: , . By 卡西卡

尋找view,proc,func中有某個字串

CREATE PROC up_obj (
  @STR VARCHAR(100)
) AS

SELECT object_name(id) AS OBJNAME
FROM [syscomments]
WHERE [text] like '%'+@STR+'%'
ORDER BY object_name(id)

 

[SP]up_Select

Posted In: , . By 卡西卡

將資料表所有欄位組成SELECT句

CREATE PROCEDURE up_Select (
    @TABLE_NAME NVARCHAR(128) -- 資料表名稱
)AS
DECLARE @BUF NVARCHAR(1000)
DECLARE @COLUMN_NAME NVARCHAR(128)

SET @BUF=''

DECLARE curView CURSOR  FOR
    SELECT COLUMN_NAME
    FROM [INFORMATION_SCHEMA].[COLUMNS]
    WHERE TABLE_NAME=@TABLE_NAME

OPEN curView
FETCH curView
INTO @COLUMN_NAME

WHILE @@FETCH_STATUS = 0
    BEGIN -- WHILE
        SELECT @BUF=@BUF + @COLUMN_NAME + ','
        FETCH curView INTO @COLUMN_NAME
    END -- WHILE

CLOSE curView
DEALLOCATE curView

IF Len(@BUF)>0
BEGIN
    SELECT @BUF = LEFT(@BUF,LEN(@BUF)-1)
    PRINT 'SELECT'
    PRINT @BUF
    PRINT 'FROM ['+@TABLE_NAME+']'
END
ELSE
    PRINT '(none)'

 

[SP]up_RefreshView

Posted In: , . By 卡西卡

重整所有視表。
sp_refreshview [msdn]

CREATE PROCEDURE [up_RefreshView] AS
DECLARE @ViewName sysname

DECLARE curView CURSOR  FOR
    SELECT TABLE_NAME
    FROM [INFORMATION_SCHEMA].[TABLES]
    WHERE TABLE_TYPE='VIEW' AND [TABLE_SCHEMA]<>'INFORMATION_SCHEMA' AND SUBSTRING(TABLE_NAME,1,3)!='sys'

OPEN curView FETCH curView INTO @ViewName

WHILE @@FETCH_STATUS = 0
    BEGIN -- WHILE
        print @ViewName
        exec sp_refreshview @ViewName
        FETCH curView INTO @ViewName
    END -- WHILE

CLOSE curView
DEALLOCATE curView

 

Ping 1.1

Posted In: , . By 卡西卡

使用範例:
public class MainProc
{
 public static void Main(string[] argv)
 {
  // 測試
  bool ret = NetworkHelper.Ping(argv[0]);
  Console.WriteLine("Ping [{0}] = {1}", argv[0], ret);
 }
}
 

注意事項:

  • .NET 2.0 以上有Ping Class可以直接使用。[msdn]

參考資料:

 

ArcIMS - GET_FEATURES

Posted In: , . By 卡西卡

  •  GET_FEATURES 只能對Query, Feature, ArcMap 這3種Server送出。
  • 送出的Request編碼要設為big5才不會有中文亂碼。不能用UTF-8。

送出

  • LAYER:指定要查那一層
  • SPATIALQUERY:查詢條件
    • subfields:回傳的欄位,用空格分隔(如:ST_CODE ST_NAME)
      #ALL#, #SHAPE#
    • where:條件。<>符號要先編碼

回傳

 


GET_FEATURES
  • outputmode (binary, xml, newxml)
    binary表示傳及收都是compressed binary stream。
    newxml回傳型式如上面的例子。
    xml會傳回簡短型式的資料
    <FEATURE><FIELDS STCODE="466880" STNAME="板橋" /></FEATURE>
  • 加上featurelimit可以限制回傳的資料筆數
  • 加上beginrecord可以指定從第幾筆資料開始回傳。
  • 加上skipfeatures,true表示不傳細項,只回傳有幾筆資料。

subfields

  • 用#ALL#會回傳所有欄位。
  • 加上 #SHAPE# ,如:"#SHAPE# STCODE STNAME,會回傳:
    <FEATURE>
    <FIELDS>
    <FIELD name="STCODE" value="466900" />
    <FIELD name="STNAME" value="淡水" />
    <FIELD name="#SHAPE#" value="[Geometry]" />
    </FIELDS>
    <MULTIPOINT>
    <POINT x="293512.984729649" y="2784394.69179442"/>
    </MULTIPOINT>

    </FEATURE>

 

參考資料:

 

ArcIMS - GET_IMAGE

Posted In: , . By 卡西卡

.NET Link, ArcXML

相關DLL

  • ESRI.ArcIMS.Server.dll
  • ESRI.ArcIMS.Server.TCP.dll

重點在於將圖檔大小和地圖範圍填入XML中傳給ArcIMS Server,並解析回傳的結果。

送出

接收

參考資料:

http://gis.ascc.net/ISTIS/tools.html