我有一个SQL脚本,它正在设置两个数据库表及其键和约束,没有任何问题.我不会包含整个代码,但它的"骨架"看起来像这样:
BEGIN
CREATE TABLE [table] (
)
CREATE TABLE [table2] (
)
ALTER TABLE table...
ALTER TABLE table2....
END
Run Code Online (Sandbox Code Playgroud)
我很难尝试将存储过程添加到此脚本中,理想情况下,我希望将所有内容都包含在同一个脚本中.有人可以告诉我如何将以下存储过程包含在上面的脚本中吗?
CREATE PROCEDURE Test
@x int
AS
BEGIN
SELECT COUNT(*)
FROM table
END
GO
Run Code Online (Sandbox Code Playgroud)
我已经尝试将它放在脚本的末尾,并且尝试使用和不使用BEGIN,END和GO标记但是我一直收到错误,其中显示"PROCEDURE附近的语法不正确".
我尝试在 Sql Server 2008 中为 ma DB 生成脚本..并且我能够做到这一点,生成的脚本是:
USE [Cab_Booking]
GO
/****** Object: Table [dbo].[User] Script Date: 05/19/2013 10:33:05 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[User]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[User](
[U_Id] [int] IDENTITY(1,1) NOT NULL,
[UserName] [nvarchar](50) NOT NULL,
[Password] [nvarchar](50) NOT NULL,
add column new int not null,
CONSTRAINT [PK_User] PRIMARY KEY CLUSTERED
(
[U_Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = …Run Code Online (Sandbox Code Playgroud) 可以使用 SQL Server Management Studio 生成特定表的插入,方法是右键单击数据库 -> 任务 -> 生成脚本,选择表,最后仅选择数据。然而,随着时间的推移,表变得越来越大,我只需要具有特定条件的插入,这只会返回该表中的部分数据。
示例:有一张桌子
FlightTickets
(
TicketId(PK),
BuyerId(FK to buyers),
FlightId(FK to Flights)
)
Run Code Online (Sandbox Code Playgroud)
我只需要条件 FlightId = 12345 的插入脚本。
是否可以在 SQL Server Management Studio 中完成,或者我是否必须用 C# 编写一些内容来处理这个问题?
我想将所有从SQL Server 2012到Visual Studio 2012的存储过程编写为.sql文件脚本 (在另一个项目中)。我怎么做?我需要每个存储过程一个.sql文件吗?在SQL Server 2012中右键单击数据库后,可以使用“在任务中生成脚本”选项获取脚本。但是,在每种情况下,.sql文件的名称均为spname.StoredProcedure。我希望该名称为spname.sql。同样,我不希望文件名是database.spname.StoredProcedure,我希望它只是spname.sql
sql sql-server sql-scripts generate-scripts visual-studio-2012
我正在创建一个运行在一条记录上的MySQL脚本,并从一系列其他表中提取关联的记录,这非常有用,但在DBeaver中,结果以选项卡的形式返回,该选项卡仅包含结果的表名,是非常有用的,但有时让选项卡准确显示结果是非常有用的。
有没有一种方法可以在SQL脚本中指定应该由DBeaver拾取的结果的名称,以便将其显示为选项卡名称?
在DBeaver中,如果我执行以下脚本(Opt + X):
SELECT *
FROM
partnerships;
SELECT id, name, owner_id
FROM
partnerships
WHERE
name LIKE '%wp%';
Run Code Online (Sandbox Code Playgroud)
对于这两个查询的结果拿出两种不同的标签在DBeaver屏幕的底部,一个将被命名为partnerships和其他partnerships-1。什么我问的是,如果有一种方法,使这些标签更有意义的事情对我来说,喜欢All Partnerships和WP Partnerships。
我很迷惑.从我在网上看过的参考文献中,执行文本文件脚本的命令是这样的:
mysql> --user=root --password=admin --database=zero <query.sql
Run Code Online (Sandbox Code Playgroud)
但是当我运行它时,命令行说myres语法错误(错误1064).我将query.sql脚本文件保存在C:程序文件中......\MYSQL\MYSQL Server5.1 ..(包含mySQL命令行终端.exe的文件夹目录)
然后我这样做了:
mysql> USE db1 \g
mysql> source <query.sql \g
Run Code Online (Sandbox Code Playgroud)
它也不起作用; 命令行给了我同样的错误.我拥有的mySQL版本与我见过的其他版本不同.如您所见,您必须在每个查询的末尾添加'\ g'.
请帮忙,如果说明不是很清楚,请告诉我
编辑:所以这是我在query.sql中的代码:
CREATE TABLE IF NOT EXISTS 'db1'(
'id' int(255) NOT NULL auto_increment,
'date' date NOT NULL,
'title' varchar(255) NOT NULL,
'introtext' text NOT NULL,
'maintext' text NOT NULL,
PRIMARY KEY ('id')
)
Run Code Online (Sandbox Code Playgroud) 我有一个SQL存储过程,我需要使用不同的参数执行几次.是否可以执行某种类型的SQL脚本,它会像数组或其他不同参数的数据结构一样多次执行?有什么想法吗?
我有以下脚本:
ALTER TABLE ODANBIRM
ADD (OBID NUMBER(10, 0) );
----------------------------------------------------------------------------
CREATE OR REPLACE TRIGGER TR_OB_INC
BEFORE INSERT ON ODANBIRM
FOR EACH ROW
BEGIN
SELECT SEQ_OB.NEXTVAL INTO :NEW.OBID FROM DUAL;
END;
-----------------------------------------------------------------------------
DECLARE
CURSOR CUR IS
SELECT ROWID AS RID FROM ODANBIRM;
RC CUR%ROWTYPE;
BEGIN
OPEN CUR;
LOOP
FETCH CUR INTO RC;
EXIT WHEN CUR%NOTFOUND;
UPDATE ODANBIRM SET OBID=SEQ_OB.NEXTVAL WHERE ROWID=RC.RID;
END LOOP;
CLOSE CUR;
COMMIT;
END;
Run Code Online (Sandbox Code Playgroud)
如你所见,我有三个不同的脚本(我用虚线分隔它们.)如果我运行这个第一个脚本运行但第二个脚本,我想创建一个触发器失败说"遇到符号"DECLARE"".如果我把触发器创建脚本拿走,我就不会出错,第一个和最后一个脚本运行没有问题.如何在不出错的情况下运行它们我该怎么办?
编辑:然后我意识到第二个脚本应该是这样的:
UPDATE ODANBIRM SET OBID=SEQ_OB.NEXTVAL;
Run Code Online (Sandbox Code Playgroud)
所以在循环中做这个简单的事情是浪费时间和低效率.我曾经听说过应该尽可能多地使用SQL和尽可能少的PL SQL来提高效率.我认为这是个好主意.
我有超过100万个插入查询要在Oracle SQL Developer中执行,这需要花费很多时间.有没有办法优化这个.
是否可以指定哪个是创建表作为选择语句的主键?我的目标是在创建表上包含主键的声明,而不是在创建后修改表。
CREATE TABLE suppliers
AS (SELECT company_id, address, city, state, zip
FROM companies
WHERE company_id < 5000);
Run Code Online (Sandbox Code Playgroud) sql-scripts ×10
sql ×5
sql-server ×4
oracle ×3
mysql ×2
dbeaver ×1
generator ×1
plsql ×1
ssms ×1