我正在上一个数据库类,在该类的实验部分的开头,我们通常必须删除之前创建的数据库中的所有表.我希望能够运行一个动态执行此操作的脚本,但似乎无法使其工作.这是我到目前为止的代码.
declare tname string(50);
cursor ctable is select table_name from user_tables;
begin
open ctable;
LOOP
FETCH ctable into tname;
if tname != '' then
execute immediate 'drop table ' || tname;
END if;
EXIT WHEN ctable%NOTFOUND;
END LOOP;
close ctable;
end;
Run Code Online (Sandbox Code Playgroud)
如果有人可以指出我正确的方向,我做错了什么会很好.谢谢.
如何传递和使用列名来检索实际列中的bigint变量?
DECLARE @personID BIGINT,
DECLARE @queryString varchar(500)
Set @queryString = 'Select @personID = ' + @PersonColumnID + ' from dbo.Loss_Witness where WitnessID = @witnessID'
exec(@queryString)
Run Code Online (Sandbox Code Playgroud)
错误消息指出"必须声明变量'@personID'." 我也试过了
Set @queryString = 'Select ' + @personID + ' = ' + @witnessPersonID + ' from dbo.Loss_Witness where WitnessID = @witnessID'
Run Code Online (Sandbox Code Playgroud)
并收到错误消息"将数据类型varchar转换为bigint时出错".
有什么想法吗?
我得到一个奇怪的例外,说""
Msg 203, Level 16, State 2, Line 53
The name 'SELECT
ISNULL(ESP.ID,-1) AS 'PayScaleID',
ISNULL(E.Prefix,'') + ISNULL(E.SerialNo,0) AS 'Token number',
ISNULL(E.FirstName,'')+' '+ ISNULL(E.MiddleName,'')+' '+ISNULL(E.LastName,'') AS 'Employee name',
ISNULL(E.CostCentreCode,'') AS 'Cost centre code',
ESP.TotalPresentDays AS 'Present days',
ESP.TotalWeeklyOffDays AS 'Week offs',
ESP.TotalPaidHolidays AS 'Paid holiDays',
ESP.TotalAbsentDays AS 'Absent days',
ESP.ArrearDays AS 'Arrear days',
ESP.OTHours AS 'OTHours',
ESP.TotalPaidAmount AS 'Total Amount',
MAD.Name AS 'Allowance' ,
X.Amount
INTO #temp
FROM
(
SELECT
-1 AS 'BillingI' is not a valid identifier."
Run Code Online (Sandbox Code Playgroud)
我正在执行以下查询."
{ …
我的PostgreSQL数据库包含一个用于存储已注册实体实例的表.此表格通过电子表格上传填充.Web界面允许操作员修改所呈现的信息.但是,原始数据不会被修改.所有的改变都存储在一个单独的表changes与列unique_id,column_name,value和updated_at.
更改完成后,首先查询原始表,然后查询更改表(使用实例ID和最新更改日期,按列名称分组),将其呈现给操作员.这两个结果在PHP中合并,并在Web界面上显示.这是执行任务的一种相当严格的方式,我想将所有逻辑保留在SQL中.
我可以使用以下查询轻松选择表的最新更改:
SELECT fltr_chg.unique_id, fltr_chg.column_name, chg_val.value
FROM changes AS chg_val
JOIN (
SELECT chg_rec.unique_id, chg_rec.column_name, MAX( chg_rec.updated_at )
FROM information_schema.columns AS source
JOIN changes AS chg_rec ON source.table_name = 'instances'
AND source.column_name = chg_rec.column_name
GROUP BY chg_rec.unique_id, chg_rec.column_name
) AS fltr_chg ON fltr_chg.unique_id = chg_val.unique_id
AND fltr_chg.column_name = chg_val.column_name;
Run Code Online (Sandbox Code Playgroud)
从instances表中选择条目同样简单:
SELECT * FROM instances;
Run Code Online (Sandbox Code Playgroud)
现在,如果只有一种方法可以转换前一个结果并将结果值替换为后者,基于unique_id和column_name,并且仍将结果保留为表格,则问题将得到解决.这可能吗?
我确信这不是最罕见的问题,而且很有可能,某些系统会以类似的方式跟踪数据的变化.如果不是通过上述方法之一(当前和寻求的解决方案),他们如何将它们应用于数据?
我的存储过程有问题
ALTER PROCEDURE [dbo].[TIGER_CREATE_RUNTIME_TABLE](@NOMBRE_TABLA varchar(100))
AS
DECLARE @SQLQUERY1 AS NVARCHAR(600)
BEGIN
SET @SQLQUERY1 = 'CREATE TABLE '+@NOMBRE_TABLA + '(
SEGMENTO varchar(200) NULL,
TCNFOL varchar(200) NOT NULL,
TCCOPL_A varchar(200) NULL,
ID_LIN_NEG varchar(200) NULL,
TIP_LIN varchar(200) NULL,
MON_ID_MONEDA varchar(200) NULL,
LINEAS_FACT varchar(200) NULL,
CF_VOZ varchar(200) NULL,
CF_DATOS varchar(200) NULL,
ADIC_MINS varchar(200) NULL,
ADIC_LDN varchar(200) NULL,
ADIC_LDI varchar(200) NULL,
ADIC_SMS varchar(200) NULL,
PAQ_SMS varchar(200) NULL,
ADIC_DATOS varchar(200) NULL,
OTROS varchar(200) NULL,
SUB_TOT varchar(200) NULL,
PERIODO_ANALISIS varchar(200) NULL,
PERIODO_ALTA varchar(200) NULL,
CATEGORIA varchar(200) NULL, …Run Code Online (Sandbox Code Playgroud) 如何构造SQL语句以跨多个平面无关表运行,并使用select的结果和结果来自的表的名称显示结果.
这个场景是我有几个表中每个都有相同列名的表.我收集的是来自外部各方的数据,因为它存储在不同的表中.
相同的表格如下:
Table 1: pid, parent_name, student_name, student_number, class_name, columnN
Table 2: pid, previous_school, previous_school, student_number, columnN
Table 3: pid, student_name, student_number, parent_name, column4, columnN
Table 14: pid, student_number, parent_name, column4, columnN
Table N: pid, previous_school, parent_name, column4, columnN
Run Code Online (Sandbox Code Playgroud)
我需要一个student_name在所有表中搜索的SQL语句在伪代码中:for each table, find a student named john doe and return to me the row where you got the result and the table where you found the result
在以下演示文稿中给出结果:
john doe, Table 1, pid
john doe, Table …Run Code Online (Sandbox Code Playgroud) 我正在阅读专家 - oracle-database-architecture书.汤姆正在解释关于绑定变量的内容.
你能告诉我第一个程序和第二个程序有什么不同吗?根据我的理解,我们execute immediate用来执行动态SQL语句或匿名PL/SQL块.
这是目标表:
create table t ( x int );
Run Code Online (Sandbox Code Playgroud)
以下是过程#1的示例:
ops$tkyte%ORA11GR2> create or replace procedure proc_name1
2 as
3 begin
4 for i in 1 .. 10
5 loop
6 execute immediate
7 'insert into t values ( '||i||')';
8 end loop;
9 end;
10 /
Run Code Online (Sandbox Code Playgroud)
以下是过程#2的示例:
create or replace procedure proc_name2
as
begin
for i in 1 .. 10
loop
insert into t values ( i);
end loop;
end;
Run Code Online (Sandbox Code Playgroud) 我有一个名为的数据库test,它在架构中具有2个视图和2个表,dbo如下所示:

我想创建一个表report,该表列出每个视图和每个表的行号。这个概念是这样的:
select table_name, table_type, "select count(*) from table_name" as rowCount
into test.dbo.report
from test.INFORMATION_SCHEMA.tables;
Run Code Online (Sandbox Code Playgroud)
的test.dbo.report应如下所示:
但是,我不知道如何实现。动态SQL可能是解决之道,但有些令人困惑。
我正在使用SQL Server 2014。
我有动态sql的问题(是的只有一个;))
在内存存储过程中,我声明了一个这样的局部变量
DECLARE @cmd nvarchar(max)在代码的后面我有这个行,我接收了很多输入参数(抱歉这个混乱没有成功组织它):
SET @cmd = 'INSERT INTO dbo.' + @ArchiveTableName + '(' + @ArchiveFieldsName + ',' + @ArchiveEntityMainIdentifierField + ')
SELECT ' + @EntityFieldsName + ',' + '' + @EntityMainIdentifierField + '' +
' FROM [' + @OrganizationName + '].[dbo].[' + @EntityName + '] ent
left join dbo.' + @ArchiveTableName + ' arc on arc.' + @ArchiveEntityMainIdentifierField + ' = ent.' + @EntityMainIdentifierField + '
where ent.' + @EntityMainIdentifierField + ' = ''' + @ParentId + ''' …Run Code Online (Sandbox Code Playgroud) 我想有一个包含值来比较表和操作员使用(=,!=,~,!~等).例如:
CREATE TABLE rule (
value1 varchar NOT NULL,
op1 varchar NOT NULL,
value2 varchar NOT NULL,
op2 varchar NOT NULL,
...
);
Run Code Online (Sandbox Code Playgroud)
我想要的可以使用这个伪代码来描述:
SELECT * FROM rule WHERE value1 op1 ?;
Run Code Online (Sandbox Code Playgroud)
在示例中,我将操作符存储在单独的列中,但我对其他解决方案持开放态度.
dynamic-sql ×10
sql ×7
sql-server ×4
postgresql ×3
t-sql ×3
oracle ×2
plsql ×2
crosstab ×1
cursor ×1
performance ×1
php ×1
plpgsql ×1
where-clause ×1