全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1466
推到 Plurk!
推到 Facebook!

我的stored procedure错在哪里?

尚未結案
luowy651
高階會員


發表:257
回覆:313
積分:114
註冊:2003-04-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-02-19 21:18:07 IP:61.164.xxx.xxx 未訂閱
各位大大: 我写了一个stored procedure,如下: CREATE PROCEDURE [test] @sr char(19) AS select * from @sr.table 其中@sr我想设为"sr.db.dbo",但不能通过,请教错在哪里? Thank you very much!
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-02-19 23:14:07 IP:218.15.xxx.xxx 未訂閱
CREATE PROCEDURE [test] @sr varchar(19) AS select * from @sr.table 试试 ——行径窄处,留一步与人行——
luowy651
高階會員


發表:257
回覆:313
積分:114
註冊:2003-04-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-02-20 08:09:29 IP:218.72.xxx.xxx 未訂閱
引言: CREATE PROCEDURE [test] @sr varchar(19) AS select * from @sr.table 试试 ——行径窄处,留一步与人行——
感谢回应,谢谢,但问题还是存在,如图:
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-02-20 08:31:44 IP:61.222.xxx.xxx 未訂閱
你好,如果你要用table變數,以下table變數的宣告語法    如果是要傳入參數然後以這個值來作為select的table名稱,    目前似乎不可行...    參考看看,沒能幫上忙還請見諒    
    DECLARE
    {{ @local_variable data_type }
        | { @cursor_variable_name CURSOR }
        | { table_type_definition }
    } [ ,...n]    < table_type_definition > ::=
    TABLE ( { < column_definition > | < table_constraint > } [ ,...] 
            )     < column_definition > ::=
    column_name scalar_data_type
    [ COLLATE collation_name ]
    [ [ DEFAULT constant_expression ] | IDENTITY [ ( seed , increment ) ] ]
    [ ROWGUIDCOL ]
    [ < column_constraint > ]     < column_constraint > ::=
    { [ NULL | NOT NULL ]
    | [ PRIMARY KEY | UNIQUE ]
    | CHECK ( logical_expression )
    }     < table_constraint > ::=
    { { PRIMARY KEY | UNIQUE } ( column_name [ ,...] ) 
    | CHECK ( search_condition ) 
    } 
luowy651
高階會員


發表:257
回覆:313
積分:114
註冊:2003-04-09

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-02-20 08:56:50 IP:218.72.xxx.xxx 未訂閱
感谢hahalin大大的回应,那是否意味着stored procedure 只能操作自已所在的database中的table,除非不用变数,直接指定xx.db.dbo.table? 那么我在client上该怎样把server上的stored procedure执行后的recoders再into 到一个client上的sql database 中的table中去呢?因为client 上的sql database名称各不相同,肯定是一个变数 Thank you very much!
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-02-20 09:56:09 IP:61.222.xxx.xxx 未訂閱
節錄自 T-SQL help    如何設定遠端伺服器以允許使用遠端預存程序 (Transact-SQL) 若要設定遠端伺服器以允許使用遠端預存程序     
    在第一部執行 Microsoft® SQL Server™ 的伺服器上執行下列程式碼: 
EXEC sp_addlinkedserver ServerName1, N'SQL Server'
EXEC sp_addlinkedserver ServerName2
EXEC sp_configure 'remote access', 1
RECONFIGURE
GO    停止並重新啟動第一部 SQL Server。    在第二部 SQL Server 上執行下列程式碼。確認您是使用「SQL Server 的帳戶驗證」進行登入。 
-- The example shows how to set up access for a login 'sa'
--  from ServerName1 on ServerName2.
EXEC sp_addlinkedserver ServerName2, local
EXEC sp_addlinkedserver ServerName1
EXEC sp_configure 'remote access', 1
RECONFIGURE
GO
-- Assumes that the login 'sa' in ServerName2 and ServerName1
--  have the same password.
EXEC sp_addremotelogin ServerName1, sa, sa
GO    停止並重新啟動第二部 SQL Server。    使用 sa 進行登入,您現在可以從第一部 SQL Server執行第二部 SQL Server 的預存程序。 
你可以順便學一下系統預存程序 sp_execsql
    USE pubs
GO
sp_executesql N'USE Northwind'
GO
/* This statement fails because the database context
   has now returned to pubs. */
SELECT * FROM Shippers
GO    
然後呢,我順手找了 openxml的TSQL語法 以下的程式碼節錄自T-SQL的help 你應該可以用得上
    DECLARE @idoc int
DECLARE @doc varchar(1000)
-- Sample XML document
SET @doc ='

  
      
      Customer was very satisfied
   
   
      
          Important
      
      
   

'
-- Create an internal representation of the XML document.
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc    -- Execute a SELECT statement using OPENXML rowset provider.
SELECT *
FROM OPENXML (@idoc, '/root/Customer/Order', 9)
      WITH (id int '@mp:id', 
            oid char(5), 
            date datetime, 
            amount real, 
            parentIDNo int '@mp:parentid', 
            parentLocalName varchar(40) '@mp:parentlocalname')
EXEC sp_xml_removedocument @idoc    以下是結果:    id   oid         date                amount    parentIDNo  parentLocalName  
--- ------- ---------------------- ---------- ------------ ---------------
6    O1    1996-01-20 00:00:00.000     3.5         2        Customer
10   O2    1997-04-30 00:00:00.000     13.4        2        Customer
19   O3    1999-07-14 00:00:00.000     100.0       15       Customer
25   O4    1996-01-20 00:00:00.000     10000.0     15       Customer    
不然,你也可以try try 用 enterprise manager 設定排程,這樣會比較不用花腦筋,design in visual way...
系統時間:2024-05-20 11:56:43
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!