精华内容
下载资源
问答
  • SQLdeclare用法

    万次阅读 2018-04-11 17:35:20
    平时写SQL查询、存储过程都是...大家都知道c#的局部变量,if如果我们定义一个变量的话他的作用到if结束为止,if外是不识别这个变量的,else里都不能使用,简单的写一下。if (true){ Int32 i = 1; Co...
    

    平时写SQL查询、存储过程都是凭着感觉来,没有探究过SQL的具体语法,一直都是按c#那一套往SQL上模仿,前几天项目中碰到一个问题引起了我对declare定义变量的作用域的兴趣。

    大家都知道c#中的局部变量,在if中如果我们定义一个变量的话他的作用到if结束为止,if外是不识别这个变量的,else里都不能使用,简单的写一下。

    if (true)
    {
          Int32 i = 1;
          Console.WriteLine(i);
    }

    这个i的作用域就是if里面,如果我们在if外面用这个变量

     

     

    if (true)
    {
        Int32 i = 1;
        Console.WriteLine(i);
    }
    Console.WriteLine(i);

     

    那第二条输出语句会报错

    The name 'i' does not exist in the current context

    说明已经出了i的作用域了。

    那么我们要是在sql写这么一段代码会是什么情况呢?首先写在if内 

    IF 1=1
    BEGIN
        DECLARE @test VARCHAR
        SET @test='1'   
        PRINT 'in if:'+@test
    END

      运行看结果输出in if:1这是可以预想的结果。那我们在if外面使用变量@test试试。

      

     

     

    复制代码
    IF 1=1
    BEGIN
       DECLARE @test VARCHAR
       SET @test='1'   
       PRINT 'in if:'+@test
    END
    PRINT 'out if:'+@test
    复制代码

     

    这样会是什么结果呢,不知道大家怎么想的,以我的大脑顺势就想到这应该报错啊,出了变量的作用域了。实际结果不仅没报错而且@test的值还在。

     in if:1

     out if:1

    看见这个结果当时我很郁闷,SQL太出人意料了。

    在SQL SERVER 2005的帮助文档里关于declare的帮助里发现这么一句话,备注的第三行“局部变量的作用域是其被声明时所在批处理”

    Msdn的地址:http://msdn.microsoft.com/zh-cn/library/ms188927.aspx

    这行字在这么一大篇中还真挺不引人瞩目。

    现在我们知道原来declare变量的作用域是所在的批处理,if阻断不了它的作用域,那上面我们的代码if内外的代码都在一个批处理中,所以@test都是可用的且if里面设置的值还在。

    下面我改造一下代码,SQL中是以GO语句来区分批处理的

     

    复制代码
    IF 1=1
    BEGIN
       DECLARE @test VARCHAR
       SET @test='1'   
       PRINT 'in if:'+@test
    END
    GO
    PRINT 'out if:'+@test
    复制代码

     

     

    这下对了,检查语法后SQL报错“必须声明标量变量"@test"”

     

    注:GO就是用于一个sql语句的结束 比如说一个批处理语句是这样的 select *from ,b select *from a 在后一个select后面加上一个GO这样可以一次执行两条sql 语句

    展开全文
  • SQL中declare用法

    2012-01-05 13:15:41
    strSQL.Append("declare @rodno varchar(50) "); strSQL.Append("set @rodno = @GetRod "); strSQL.Append("SELECT 'aaa' AS Type,a.rodNO as RodNO,a.starttime AS Starttime,b.endtime AS Endtime "); ...
  • mysql中declare语句用法详解

    千次阅读 2012-03-09 16:18:29
    mysqlDECLARE语句是复合语句声明变量的指令。 (1)Example with two DECLARE statements 两个DECLARE语句的实例 CREATE PROCEDURE p8 () BEGIN DECLARE a INT; DECLARE b INT; SET a = 5; SET b = 5;...

    mysql中的DECLARE语句是在复合语句中声明变量的指令。 
    (1)Example with two DECLARE statements 
    两个DECLARE语句的实例 
    CREATE PROCEDURE p8 () 
    BEGIN 
    DECLARE a INT; 
    DECLARE b INT; 
    SET a = 5; 
    SET b = 5; 
    INSERT INTO t VALUES (a); 
    SELECT s1 * a FROM t WHERE s1 >= b; 
    END; // /* I won't CALL this */ 
    在过程中定义的变量并不是真正的定义,你只是在BEGIN/END块内定义了而已(译注:也就是形参)。注意这些变量和会话变量不一样,不能使用修饰符@你必须清楚的在BEGIN/END块中声明变量和它们的类型。变量一旦声明,你就能在任何能使用会话变量、文字、列名的地方使用。 
    (2)Example with no DEFAULT clause and SET statement 
    没有默认子句和设定语句的例子 
    CREATE PROCEDURE p9 () 
    BEGIN 
    DECLARE a INT /* there is no DEFAULT clause */; 
    DECLARE b INT /* there is no DEFAULT clause */; 
    SET a = 5; /* there is a SET statement */ 
    SET b = 5; /* there is a SET statement */ 
    INSERT INTO t VALUES (a); 
    SELECT s1 * a FROM t WHERE s1 >= b; 
    END; // /* I won't CALL this */ 
    有很多初始化变量的方法。如果没有默认的子句,那么变量的初始值为NULL。你可以在任何时候使用SET语句给变量赋值。 
    (3)Example with DEFAULT clause 
    含有DEFAULT子句的例子 
    CREATE PROCEDURE p10 () 
    BEGIN 
    DECLARE a, b INT DEFAULT 5; 
    INSERT INTO t VALUES (a); 
    SELECT s1 * a FROM t WHERE s1 >= b; 
    END; // 
    我们在这里做了一些改变,但是结果还是一样的。在这里使用了DEFAULT子句来设定初始值,这就不需要把DECLARE和SET语句的实现分开了。  
    (4)Example of CALL 
    调用的例子 
    mysql> CALL p10() // 
    +--------+ 
    | s1 * a | 
    +--------+ 
    | 25 | 
    | 25 | 
    +--------+ 
    2 rows in set (0.00 sec) 
    Query OK, 0 rows affected (0.00 sec) 
    结果显示了过程能正常工作 
    (5) Scope 
    作用域 
    CREATE PROCEDURE p11 () 
    BEGIN 
    DECLARE x1 CHAR(5) DEFAULT 'outer'; 
    BEGIN 
    DECLARE x1 CHAR(5) DEFAULT 'inner'; 
    SELECT x1; 
    END; 
    SELECT x1; 
    END; // 
    现在我们来讨论一下作用域的问题。例子中有嵌套的BEGIN/END块,当然这是合法的。同时包含两个变量,名字都是x1,这样也是合法的。内部的变量在其作用域内享有更高的优先权。当执行到END语句时,内部变量消失,此时已经在其作用域外,变量不再可见了,因此在存储过程外再也不能找到这个声明了的变量,但是你可以通过OUT参数或者将其值指派 给会话变量来保存其值。  
    调用作用域例子的过程: 
    mysql> CALL p11()// 
    +-------+ 
    | x1 | 
    +-------+ 
    | inner | 
    +-------+ 
    +-------+ 
    | x1 | 
    +-------+ 
    | outer | 
    +-------+ 
    我们看到的结果时第一个SELECT语句检索到最内层的变量,第二个检索到第二层的变量

    展开全文
  • Oracle中declare如何使用

    2021-05-14 14:04:01
    Oracle中declare使用方法 首先我们需要了解declare遵循下面的实现结构 declare --声明 begin --开始 end; --结束 了解之后,我们就可以这个结构添加语句实现小功能 例如:输出今天的日期 declare --声明 date...

    Oracle中declare如何使用


    首先我们需要了解declare遵循下面的实现结构

    declare --声明
    begin --开始
    end; --结束
    了解之后,我们就可以在这个结构中添加语句实现小功能
    例如:输出今天的日期

    declare --声明
    datevalue varchar2(20);--定义变量
    begin --开始
    select to_char(trunc(sysdate),'yyyy-mm-dd') into datevalue from dual; --给自己定义的变量赋值
    dbms_output.put_line('当前日期为:'||datevalue );--打印
    end;--结束
    

    选中语句,运行就可以得到当前日期
    在这里插入图片描述

    展开全文
  • 从’abbccc’返回’ccc’,charindex函数用法(charindex(查找的字符串,被查找的字符串,开始查找的位置),例如查找’abbccc’第一个’c’出现的位置,charindex(‘c’,’abbccc’,1)) declare @str1 ...
  • DECLARE在SQL用法及相关等等

    千次阅读 2011-11-22 10:19:24
    :arrow: 允许用户创建游标, 用于一个大的查询里面检索少数几行数据。 ...除非声明提供值,否则声明之后所有变量将初始化为 NULL。 Transact-SQL 语法约定 语法 DECLARE { ...
    :arrow: 
    允许用户创建游标, 用于在一个大的查询里面检索少数几行数据。
    变量是在批处理或过程的主体中用 DECLARE 语句声明的,并用 SET 或 SELECT 语句赋值。游标变量可使用此语句声明,并可用于其他与游标相关的语句。除非在声明中提供值,否则声明之后所有变量将初始化为 NULL。
    Transact-SQL 语法约定
    语法

    DECLARE
    {
    {{ @local_variable [AS] data_type } | [ = value ] }
    | { @cursor_variable_name CURSOR }
    } [,...n]
    | { @table_variable_name [AS] <table_type_definition> | <user-defined table type> }

    <table_type_definition> ::=
    TABLE ( { <column_definition> | <table_constraint> } [ ,... ]
    )

    <column_definition> ::=
    column_name { scalar_data_type | AS computed_column_expression }
    [ 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 )
    }

    参数

    @ local_variable

    变量的名称。变量名必须以 at 符 (@) 开头。局部变量名称必须符合标识符规则。

    data_type

    任何系统提供的公共语言运行时 (CLR) 用户定义表类型或别名数据类型。变量的数据类型不能是 text、ntext 或 image。

    有关系统数据类型的详细信息,请参阅数据类型 (Transact-SQL)。有关 CLR 用户定义类型或别名数据类型的详细信息,请参阅 CREATE TYPE (Transact-SQL)。

    = value

    以内联方式为变量赋值。值可以是常量或表达式,但它必须与变量声明类型匹配,或者可隐式转换为该类型。

    @ cursor_variable_name

    游标变量的名称。游标变量名称必须以 at 符 (@) 开头,并符合有关标识符的规则。

    CURSOR

    指定变量是局部游标变量。

    @ table_variable_name

    table 类型的变量的名称。变量名称必须以 at 符 (@) 开头,并符合有关标识符的规则。

    <table_type_definition>

    定义 table 数据类型。表声明包括列定义、名称、数据类型和约束。允许的约束类型只包括 PRIMARY KEY、UNIQUE、NULL 和 CHECK。如果类型绑定了规则或默认定义,则不能将别名数据类型用作列标量数据类型。

    <table_type_definition> 是在 CREATE TABLE 中用于定义表的信息子集。其中包含了元素和主要定义。有关详细信息,请参阅 CREATE TABLE (Transact-SQL)。

    n

    指示可以指定多个变量并对变量赋值的占位符。声明 table 变量时,table 变量必须是 DECLARE 语句中声明的唯一变量。

    column_name

    表中的列的名称。

    scalar_data_type

    指定列是标量数据类型。

    computed_column_expression

    定义计算列值的表达式。计算列由同一表中的其他列通过表达式计算而得。例如,计算列可以定义为 cost AS price * qty。表达式可以是非计算列名称、常量、内置函数、变量,也可以是用一个或多个运算符连接的上述元素的任意组合。表达式不能为子查询或用户定义函数。表达式不能引用 CLR 用户定义类型。

    [ COLLATE collation_name ]

    指定列的排序规则。collation_name 可以是 Windows 排序规则名称或 SQL 排序规则名称,并且只适用于 char、varchar、text、nchar、nvarchar 和 ntext 数据类型的列。如果未指定,则该列的排序规则是用户定义数据类型的排序规则(如果列为用户定义数据类型)或当前数据库的排序规则。

    有关 Windows 排序规则名称和 SQL 排序规则名称的详细信息,请参阅 COLLATE (Transact-SQL)。

    DEFAULT

    如果在插入过程中未显式提供值,则指定为列提供的值。DEFAULT 定义可适用于除定义为 timestamp 或带 IDENTITY 属性的列以外的任何列。删除表时,将删除 DEFAULT 定义。只有常量值(如字符串)、系统函数(如 SYSTEM_USER())或 NULL 可用作默认参数。为了与 SQL Server 的早期版本兼容,可以为 DEFAULT 分配约束名称。

    constant_expression

    用作列的默认值的常量、NULL 或系统函数。

    IDENTITY

    指示新列是标识列。在表中添加新行时,SQL Server 将为列提供一个唯一的增量值。标识列通常与 PRIMARY KEY 约束一起用作表的唯一行标识符。可以将 IDENTITY 属性分配给 tinyint、smallint、int、decimal(p,0) 或 numeric(p,0) 列。每个表只能创建一个标识列。不能对标识列使用绑定默认值和 DEFAULT 约束。必须同时指定种子和增量,或者都不指定。如果二者都未指定,则取默认值 (1,1)。

    seed

    是装入表的第一行所使用的值。

    increment

    添加到以前装载的列标识值的增量值。

    ROWGUIDCOL

    指示新列是行的全局唯一标识符列。对于每个表,只能将其中的一个 uniqueidentifier 列指定为 ROWGUIDCOL 列。ROWGUIDCOL 属性只能分配给 uniqueidentifier 列。

    NULL | NOT NULL

    决定在列中是否允许 Null 值的关键字。

    PRIMARY KEY

    通过唯一索引对给定的一列或多列强制实现实体完整性的约束。每个表只能创建一个 PRIMARY KEY 约束。

    UNIQUE

    通过唯一索引为给定的一列或多列提供实体完整性的约束。一个表可以有多个 UNIQUE 约束。

    CHECK

    一个约束,该约束通过限制可输入一列或多列中的可能值来强制实现域完整性。

    logical_expression

    返回 TRUE 或 FALSE 的逻辑表达式。

    <<user-defined table type>>

    指定变量是用户定义表类型。

    备注

    变量常用在批处理或过程中,作为 WHILE、LOOP 或 IF...ELSE 块的计数器。

    变量只能用在表达式中,不能代替对象名或关键字。若要构造动态 SQL 语句,请使用 EXECUTE。

    局部变量的作用域是其被声明时所在批处理。

    当前分配有游标的游标变量可在下列语句中作为源引用:

    * CLOSE 语句。
    * DEALLOCATE 语句。
    * FETCH 语句。
    * OPEN 语句。
    * 定位的 DELETE 或 UPDATE 语句。
    * SET CURSOR 变量语句(在右侧)。

    在所有上述语句中,如果存在被引用的游标变量,但是不具有当前分配给它的游标,那么 SQL Server 将引发错误。如果不存在被引用的游标变量,SQL Server 将引发与其他类型的未声明变量引发的错误相同的错误。

    游标变量:

    * 可以是游标类型或其他游标变量的目标。有关详细信息,请参阅 SET @local_variable (Transact-SQL)。
    * 如果当前没有给游标变量分配游标,则可在 EXECUTE 语句中作为输出游标参数的目标引用。
    * 应被看作是指向游标的指针。有关游标变量的详细信息,请参阅 Transact-SQL 游标。

    示例
    A. 使用 DECLARE

    下例将使用名为 @find 的局部变量检索所有姓氏以 Man 开头的联系人信息。
    复制代码

    USE AdventureWorks;
    GO
    DECLARE @find varchar(30);
    /* Also allowed:
    DECLARE @find varchar(30) = 'Man%';
    */
    SET @find = 'Man%';
    SELECT LastName, FirstName, Phone
    FROM Person.Contact
    WHERE LastName LIKE @find;

    下面是结果集:
    复制代码

    LastName FirstName Phone
    -------------------------------------------------- -------------------------------------------------- -------------------------
    Manchepalli Ajay 1 (11) 500 555-0174
    Manek Parul 1 (11) 500 555-0146
    Manzanares Tomas 1 (11) 500 555-0178
    (3 row(s) affected)

    B. 在 DECLARE 中使用两个变量

    下例将检索北美销售区中年销售额至少为 $2,000,000 的 Adventure Works Cycles 销售代表的名字。
    复制代码

    USE AdventureWorks;
    GO
    SET NOCOUNT ON;
    GO
    DECLARE @Group nvarchar(50), @Sales money;
    SET @Group = N'North America';
    SET @Sales = 2000000;
    SET NOCOUNT OFF;
    SELECT FirstName, LastName, SalesYTD
    FROM Sales.vSalesPerson
    WHERE TerritoryGroup = @Group and SalesYTD >= @Sales;

    C. 声明一个表类型的变量

    下例将创建一个 table 变量,用于储存 UPDATE 语句的 OUTPUT 子句中指定的值。在它后面的两个 SELECT 语句返回 @MyTableVar 中的值以及 Employee 表中更新操作的结果。请注意,INSERTED.ModifiedDate 列中的结果与 Employee 表的 ModifiedDate 列中的值不同。这是因为对 Employee 表定义了 AFTER UPDATE 触发器,该触发器可以将 ModifiedDate 的值更新为当前日期。不过,从 OUTPUT 返回的列将反映触发器激发之前的数据。有关详细信息,请参阅 OUTPUT 子句 (Transact-SQL)。
    复制代码

    USE AdventureWorks;
    GO
    DECLARE @MyTableVar table(
    EmpID int NOT NULL,
    OldVacationHours int,
    NewVacationHours int,
    ModifiedDate datetime);
    UPDATE TOP (10) HumanResources.Employee
    SET VacationHours = VacationHours * 1.25
    OUTPUT INSERTED.EmployeeID,
    DELETED.VacationHours,
    INSERTED.VacationHours,
    INSERTED.ModifiedDate
    INTO @MyTableVar;
    --Display the result set of the table variable.
    SELECT EmpID, OldVacationHours, NewVacationHours, ModifiedDate
    FROM @MyTableVar;
    GO
    --Display the result set of the table.
    --Note that ModifiedDate reflects the value generated by an
    --AFTER UPDATE trigger.
    SELECT TOP (10) EmployeeID, VacationHours, ModifiedDate
    FROM HumanResources.Employee;
    GO

    D. 声明一个用户定义表类型的变量

    下例将创建一个名为 @LocationTVP 的表值参数或表变量。这需要使用一个相应的名为 LocationTableType 的用户定义表类型。有关如何创建用户定义表类型的详细信息,请参阅 CREATE TYPE (Transact-SQL)。有关表值参数的详细信息,请参阅表值参数(数据库引擎)。
    复制代码

    DECLARE @LocationTVP
    AS LocationTableType;
    展开全文
  • DELIMITER //DROP PROCEDURE IF EXISTS curdemo//CREATE PROCEDURE curdemo()BEGINDECLARE done INT DEFAULT 0;DECLARE cnt INT DEFAULT 0;DECLARE s_region CHAR(255);DECLARE stmp CHAR(255)DEFAULT'';DECLARE cur...
  • SQL ServerTEXT类型字段值在数据库中追加字符串方法 对text类型字段值进行追加更新的操作,一开始用了简单的update语句试了试,有错误,原来text、ntext类型的字段不能和 varchar类型进行add(+)运算,找了半天...
  • 存储过程在数据库中测试

    千次阅读 热门讨论 2016-03-20 21:23:17
    在数据库中同样可以进行测试,这样就会减少一些麻烦,避免系统运行出错再返回数据库修改的弊端,避免了时间的浪费,一寸光阴一寸金,寸金难买寸光阴,我们可以从这里节约一些时间,珍惜时间从这里做起,让我们一起...
  • declare命令用法

    2017-12-04 13:56:00
    只需要掌握declare -i 就可以了 本文转自 Super康 51CTO博客,原文链接:http://blog.51cto.com/zhengkangkang/1855822,如需转载请自行联系原作者 ...
  • oracledeclare

    万次阅读 2011-10-09 11:12:34
    使用declare或begin关键字开头的叫匿名块,每次使用均需要进行编译,不能存储在数据库中且不能被其他PL/SQL调用。而你所谓的存储过程,存储函数,触发器等叫命名块,一经编译后面就可直接调用,且可以存储在数据库中...
  • 想找一个命令能清空数据库中所有用户表的方法没有找到,只能用一个比较烦琐的方法,不知道有没有更简单的方法declare @strSqlTmp varchar(8000)declare @strSql varchar(8000)set @strSqlTmp = ''declare online_...
  • 新建id字段(这个就不用说了)因为已经使用的表有一些旧数据了,不能删除的情况下必须批量添加id,方法是:update T_TEST set I_ID=rownum commit;这样 所有旧数据就会按顺序加上I_ID,加入末尾的I_ID为100. ...
  • 数据库使用过程由于程序方面的问题有时候会碰到重复数据,重复数据导致了数据库部分设置不能正确设置…… 方法declare @max integer,@id integer declare cur_rows cursor local for select 主字段,count(*) ...
  • sql server数据库中raiserror函数的用法1

    千次阅读 2016-03-06 18:52:53
    sql server数据库中raiserror的作用就和asp.net的throw new Exception一样,用于抛出一个异常或错误。这个错误可以被程序捕捉到。 raiserror的常用格式如下: raiserror('错误的描述',错误的严重级别代码,错误的...
  • 使用declare或begin关键字开头的bai叫匿名块,每次使用均需要进行编译,不能存储在数据库中且不能被其他PL/SQL调用。 而存储过程,存储函数,触发器等叫命名块,一经编译后面就可直接调用,且可以存储在数据库中,...
  • 数据库事务嵌套用法

    2012-11-05 15:43:00
    对于存储过程调用其他存储过程时会使用很多事务,即每个存储过程中都存在事务!但是如果某一个存储过程出现回滚时,会报出“无法回滚Tran1,找不到该名称的事务或保存点。”解决此问题的方法是每个子存储过程中都...
  • Oracle中declare的用例

    2020-11-12 19:00:48
    场景:如果一场考试有100个科目,每个科目的成绩存放以"t_科目代码_1_pyjd"格式命名的表里面。 若想获取每个科目的阅卷进度(ksstzt不...第三部分的c.kmdm是从游标取值,into是给第一部分的变量赋值,dbms_output
  • 数据库中游标的使用

    千次阅读 2013-09-19 12:00:31
    数据库中游标的使用 1游标和游标的优点    在数据库中,游标是一个十分重要的概念。游标提供了一种对从表检索出的数据进行操作的灵活手段,就本质而言,游标实际上是一种能从包括多条数据记录的结果集中每次...
  • 删除数据库中重复数据的几个方法数据库使用过程由于程序方面的问题有时候会碰到重复数据,重复数据导致了数据库部分设置不能正确设置…… 方法declare @max integer,@id integerdeclare cur_rows cursor local...
  • 涉及到将数据从一个数据库的表导入到另一个数据库中,下面总结一下学习的方法:1. 使用DTS这是SQL Server2000自带的一个强大的数据导出工具,2005变成了SSIS。因为安装环境的问题,不能使用。只能采用后面的方法...
  • sql语句添加变量。 declare @local_variable data_...sql语句就可以使用@local_variable来调用变量   声明可以提供值,否则声明之后所有变量将初始化为NULL。   例如:declare @id int
  • MySQL declare语句用法介绍

    万次阅读 2014-08-18 17:13:49
    MySQL declare语句是复合语句声明变量的指令。 (1)Example with two DECLARE statements  两个DECLARE语句的实例 CREATE PROCEDURE p8 () BEGIN DECLARE a INT; DECLARE b INT; SET a = 5;...
  • 换工作了,以后主要和SqlServer打交道了,仿佛回到了大学,不知道学校的饭还是那么好吃又便宜吗?北京的饭好贵;不知道门口哪家板面的生意是不是还是那么红火,好想再...使用对象:类、接口、变量、方法 protect..
  • --下面的存储过程用于某个数据库中的所有表查找某一字符串 ----使用: EXEC Search '阿三' CREATE PROCEDURE Search @Str varchar(100),@SearchFlag int=0,@TableFlag int=1 /** **@Str 要搜索的字符串 **...
  • 1) 理解存储过程和函数的概念。...choose数据库中创建存储过程get_pro_student_course(),该存储过程具有以下功能:给定一个学生学号,统计该生已经选修哪些课程。 调用存储过程get_pr..
  • PB内置OEACLE数据库接口的使用方法

    千次阅读 2006-09-28 11:14:00
    PB内置OEACLE数据库接口的使用方法 马长明 PowerBuilder(PB)和Oracle分别是前端开发工具和RDBMS的主流产品。PB提供了两种与Oracle连接的接口:PowerSoft内置的数据库接口(Native Database Interface)和ODBC接口。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 70,993
精华内容 28,397
关键字:

在数据库中declare的用法